tl; dr
String output =
LocalDate.now(ZoneId.of("America/Montreal"))
.getDayOfWeek()
.getDisplayName(TextStyle.FULL , Locale.CANADA_FRENCH) ;
java.time
Các java.các lớp thời gian được xây dựng trong Java 8 trở lên và back-ported to Java 6 & 7 và to Android bao gồm tiện ích DayOfWeek
enum.
Ngày được đánh số theo định nghĩa chuẩn ISO 8601, 1-7 cho Thứ Hai-Chủ Nhật.
DayOfWeek dow = DayOfWeek.of(1);
Phương pháp này bao gồm phương thức getDisplayName
để tạo chuỗi tên được dịch địa phương trong ngày.
Đối tượng Locale
chỉ định ngôn ngữ của con người được sử dụng trong bản dịch và chỉ định tiêu chuẩn văn hóa để quyết định các vấn đề như viết hoa và dấu chấm câu.
String output = DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL , Locale.CANADA_FRENCH) ;
Để có ngày hôm nay, hãy sử dụng lớp học LocalDate
. Lưu ý rằng múi giờ rất quan trọng đối với bất kỳ thời điểm cụ thể nào ngày thay đổi trên toàn cầu.
ZoneId z = ZoneId.of("America/Montreal");
LocalDate today = LocalDate.now(z);
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName(TextStyle.FULL , Locale.CANADA_FRENCH) ;
Hãy nhớ rằng ngôn ngữ không có liên quan gì đến múi giờ. Bạn có thể muốn một bản trình bày tiếng Pháp của một quy hoạch ngày giờ ở Ấn Độ (Asia/Kolkata
).
Joda thời gian
UPDATE: Dự án Joda-Time, bây giờ trong maintenance mode, khuyên chuyển đổi sang các java.time lớp.
Thư viện Joda-Time cung cấp Locale
- nội địa hoá các giá trị ngày giờ.
DateTimeZone zone = DateTimeZone.forID("America/Montreal");
DateTime now = DateTime.now(zone);
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern("EEEE").withLocale(locale);
String output = formatterUnJourQuébécois.print(now);
System.out.println("output: " + output);
đầu ra: Samedi
Về java.time
Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date
, Calendar
, & SimpleDateFormat
.
Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển đến các lớp java.time.
Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.
Nơi lấy các lớp java.time?
- Java SE 8 và SE 9 và sau
- Built-in.
- Một phần của API Java chuẩn với gói được triển khai.
- Java 9 thêm một số tính năng và bản sửa lỗi nhỏ.
- Java SE 6 và SE 7
- Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport.
- Android
Từ SimpleDateFormat documentation: _Đối với định dạng, nếu số mẫu có từ 4 trở lên, sử dụng biểu mẫu đầy đủ; nếu không, một dạng viết tắt hoặc viết tắt được sử dụng nếu có _.... Điều đó có nghĩa là khi tôi sử dụng mã này, tôi đã nhận ** Mon ** thay vì ** Monday **. Nếu bạn muốn sử dụng đầy đủ hình thức "EEEE" [link] (http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html) – xtem
Cảm ơn .. Tôi có điểm này. .. :) –