Tôi làm cách nào để tìm số DateFormat
cho một số Locale
nhất định?Định dạng ngày Java cho Locale
Trả lời
DateFormat.getDateInstance(int,Locale)
Ví dụ:
import static java.text.DateFormat.*;
DateFormat f = getDateInstance(SHORT, Locale.ENGLISH);
Sau đó, bạn có thể sử dụng đối tượng này sang định dạng Date
s:
String d = f.format(new Date());
Nếu bạn thực sự muốn biết mô hình cơ bản (ví dụ yyyy-MMM-dd
) sau đó, vì bạn sẽ nhận được đối tượng SimpleDateFormat
trở lại:
SimpleDateFormat sf = (SimpleDateFormat) f;
String p1 = sf.toPattern();
String p2 = sf.toLocalizedPattern();
Tôi không nghĩ rằng có một sự bảo đảm rằng DateFormat.getDateInstance (...) trả về một đối tượng SimpleDateFormat, vì vậy việc đưa kết quả vào SimpleDateFormat có thể nguy hiểm (nó có thể không hoạt động trên một triển khai thực hiện Java khác). thậm chí không làm việc trên một phiên bản khác của việc thực hiện của Sun). – Jesper
Điều này rất đúng - không có bảo đảm. Nhưng nó sẽ là một 'SimpleDateFormat' trong thực tế –
FYI, các lớp ngày giờ phiền hà cũ như' java.text.SimpleDateFormat' hiện là [legacy] (https://en.wikipedia.org/wiki/Legacy_system), thay thế bởi các lớp [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html). Xem [Hướng dẫn của Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –
Có cách nào khác (không sử dụng SimpleDateFormat cast) để lấy mẫu mặc định cho đối tượng Locale đã cho không?
Tạo bài đăng mới nếu bạn cần đặt câu hỏi hoặc đặt câu hỏi trong phần nhận xét. Chúng được dành riêng cho câu trả lời cho bài đăng gốc. – hfontanez
tl; dr
DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL)
.withLocale(Locale.CANADA_FRENCH);
java.time
Các lớp ngày thời gian ban đầu hiện nay là di sản và đã được thay thế bởi các lớp java.time.
DateTimeFormatter
có cách đơn giản để tự động bản địa hóa theo Locale
khi tạo Chuỗi để thể hiện giá trị ngày giờ. Chỉ định một FormatStyle
để cho biết độ dài đầu ra (viết tắt là không).
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
f = f.withLocale(Locale.CANADA_FRENCH);
Lấy thời điểm hiện tại. Lưu ý rằng Locale
và múi giờ không liên quan gì đến nhau. Một xác định trình bày, một điều chỉnh khác vào một wall-clock time cụ thể. Vì vậy, bạn có thể có múi giờ ở New Zealand với Locale
tiếng Nhật hoặc trong trường hợp này là múi giờ ở Ấn Độ với bản trình bày được định dạng cho người Québécois để đọc.
ZoneId z = ZoneId.of("Asia/Kolkata");
ZonedDateTime zdt = ZonedDateTime.now(z);
Tạo chuỗi bằng cách sử dụng đối tượng định dạng bản địa hóa đó.
String output = zdt.format(f);
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, Java 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à Java 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
- Dự án ThreeTenABP thích nghi ThreeTen-backport (nêu trên) cho Android cụ thể.
- Xem How to use ThreeTenABP….
Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval
, YearWeek
, YearQuarter
và more.
- 1. Java: Định dạng Float phụ thuộc vào Locale
- 2. Định dạng ngày JAVA
- 3. SimpleDateFormat (String mẫu, locale Locale) với ví dụ Locale.US cho ASCII ngày
- 4. Định dạng ngày cho tuần
- 5. định dạng ngày tháng jquery ui định dạng ngày tháng
- 6. Định dạng ngày Java cho phép -/hoặc. như tách trong ngày
- 7. excel ngày định dạng cho mysql
- 8. Java: Không thể định dạng Đối tượng đã cho dưới dạng Ngày
- 9. PHP Ngày theo định dạng ngày tháng iCal cho DTSTART
- 10. DateTime.Parse ngày định dạng
- 11. Lấy định dạng đơn vị tiền tệ cho quốc gia không có hằng số Locale
- 12. Định dạng ngày ActiveRecord
- 13. Định dạng ngày PHP
- 14. Đặt định dạng ngày mặc định cho datepicker?
- 15. Xác thực định dạng ngày tháng Regex trên Java
- 16. Ngày định dạng chuyển đổi sử dụng Java
- 17. Cách sắp xếp Ngày có định dạng chuỗi trong java?
- 18. Làm thế nào để định dạng chuỗi ngày trong java?
- 19. Định dạng ngày giờ Ngày trong năm
- 20. Định dạng một ngày lịch
- 21. Lấy định dạng ngày theo ngôn ngữ trong PHP
- 22. Định dạng ngày tháng PHPExcel
- 23. Định dạng ngày và giờ
- 24. Định dạng ngày trong RangeValidator
- 25. ngày định dạng với moment.js
- 26. định dạng ngày giờ sang định dạng SQL bằng C#
- 27. Tại sao java.text.DateFormat trả về cùng một định dạng ngày cho en_US và en_GB trên Android?
- 28. Định dạng ngày Apache poi
- 29. ngày định dạng bằng C#
- 30. Định dạng ngày tương đối
FYI, các lớp ngày giờ phiền hà cũ như 'DateFormat' hiện là [cũ] (https://en.wikipedia.org/wiki/Legacy_system), được thay thế bởi [java.time] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) các lớp học. Xem [Hướng dẫn của Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –