2015-07-24 17 views
7

Tôi hiện đang tạo ứng dụng cho android, nhưng tôi không chắc chắn lớp nào thực sự tốt nhất để sử dụng.Tôi nên sử dụng lớp nào cho Ngày trong Android?

Những gì tôi cần làm với những ngày tôi đang làm việc là so sánh ngày, nhận sự khác biệt giữa ngày và tính toán ngày (chẳng hạn như cộng/trừ một khoảng thời gian nhỏ chẳng hạn như hai tuần hoặc một tháng cho bất kỳ ngày cụ thể nào).

Tôi biết rằng lớp Ngày chuẩn trong API Java là khủng khiếp, vì vậy tôi chỉ tự hỏi nên chọn lớp nào?

Tôi đã xem lớp GregorianCalendar và thư viện Thời gian Joda. Tuy nhiên, tôi đọc trên một bài đăng do kích thước của thư viện Thời gian Joda, nó không được đề xuất cho các ứng dụng.

Mọi trợ giúp sẽ được đánh giá cao. ^^

Chỉnh sửa: Khi nhận xét từ 404notfound, tôi quyết định sử dụng giao diện Lịch. Điều này là do giao diện Lịch tự động sử dụng triển khai tốt nhất của nó dựa trên ngôn ngữ và múi giờ của thiết bị của người dùng. Điều này sẽ làm cho nó linh hoạt hơn việc thực hiện GregorianCalendar (hoặc các triển khai cụ thể khác) về các địa điểm bạn có thể triển khai.

Hy vọng điều này hữu ích cho bất kỳ ai khác có cùng một câu hỏi hóc búa!

Chỉnh sửa # 2: Sau khi xem thêm liên kết được cung cấp bởi Nguyễn Hoài Nam, tôi đã đi với thư viện ThreeTenABP, vì nó là một trình bao bọc cho lớp Thời gian mới nổi bật trong Java 8, và sẽ chứng minh thông thạo hơn trong sử dụng so với cách tiếp cận Lịch.

+0

@ 404không bao giờ so sánh với lớp GregorianCalendar trong Android về cách sử dụng? Tôi chỉ tự hỏi, do GregorianCalendar là một triển khai cụ thể về giao diện Lịch. –

Trả lời

8

Tôi khuyên bạn nên xem thư viện ThreeTenABP để thay thế tốt hơn (vì đó là những gì tôi đã di chuyển một ứng dụng tương tự để sử dụng). Thư viện này là một backport cho Android của ThreeTenBP, mà lần lượt là một backport cho Java 6 của mới nhất của Java 8 ngày Time API (cùng một người sáng tạo). (Tôi khuyến khích bạn xem lại ưu điểm/ưu tiên của API thời gian ngày 8 của Java trước đó.) Lưu ý rằng ThreeTenBP cung cấp một số động từ tương tự với Joda Time, do đó bạn sẽ không gặp khó khăn khi di chuyển chúng. Cuối cùng, như được chú ý trong lib này, số lượng phương thức, kích thước lib vv luôn là một vấn đề trong Android. Lib này giải quyết điều đó.

Đã chỉnh sửa để thêm hướng dẫn sử dụng.

  • Thêm lib này để build.gradle bạn

    compile 'com.jakewharton.threetenabp:threetenabp:1.0.1'

  • Tạo lớp ứng dụng của bạn nếu bạn không. Ví dụ: gói của bạn là: com.example.app, đặt một tệp mới có tên MyApplication.java trong gói đó. Đoạn trích ở đây MyApplication.

  • Cập nhật của bạn tag AndroidManifest.xml <application>: thêm dòng này ngay dưới <application: android:name=".MyApplication"

  • Chạy ứng dụng của bạn.

+0

Hãy xem liên kết, nhưng bạn có thể muốn kiểm tra [link] (https://github.com/JakeWharton/ThreeTenABP#why-not-use-threetenbp). Nhà phát triển nói rằng nó cực kỳ không hiệu quả với hệ thống Android. –

+0

Vâng đây là một backport cho ** Android ** của ThreeTenBP, xin vui lòng nhận thấy tên: ThreeTen ** A ** BP>

+0

Ah, tôi thấy sự khác biệt ngay bây giờ! Xin lỗi, tôi không nhìn thấy nó lúc đầu. Tôi đã xem thư viện và thư viện gốc, tuy nhiên tôi không thể thấy nhiều về chức năng của nó? Những lợi ích gì sẽ cung cấp cho tôi so với việc sử dụng Lịch? –

Các vấn đề liên quan