Tôi cần phải định dạng ngày không đầy đủ chỉ cho độ chính xác tháng. Đoán đầu tiên của tôi là áp dụng mẫu "MMMM yyyy" cho nó. Điều này phù hợp với nhiều ngôn ngữ (tiếng Anh, tiếng Đức, ...), nhưng cho kết quả xấu xí đối với các ngôn ngữ có độ uốn, ví dụ: Tiếng Nga. Tôi đọc documentation of SimpleDateFormat
và thấy rằng 'L' được cho là cung cấp tên tháng không phân biệt ngữ cảnh: chỉ là những gì tôi cần, vì không có ngày trong tháng trong mẫu. Vì vậy, tôi đã thử mẫu "LLLL yyyy" thay thế. Nó hoạt động hoàn hảo cho tiếng Nga và các ngôn ngữ flexion khác, nhưng thay vào đó không thành công, ví dụ: Tiếng Anh và tiếng Đức ...Dạng riêng của tên tháng theo định dạng ngày Java
Đây là mã kiểm tra:
import java.text.*;
import java.util.*;
public class test
{
public static void main (String[] arguments) throws Exception
{
for (String locale : new String[] { "en", "de", "hu", "it", "ru", "fi", "pl" })
System.out.format ("%s: %s \t%s\n", locale,
new SimpleDateFormat ("MMMM yyyy", new Locale (locale)).format (new Date()),
new SimpleDateFormat ("LLLL yyyy", new Locale (locale)).format (new Date()));
}
}
Và sản lượng của nó:
en: September 2015 0009 2015
de: September 2015 0009 2015
hu: szeptember 2015 szeptember 2015
it: settembre 2015 Settembre 2015
ru: сентября 2015 Сентябрь 2015
fi: syyskuuta 2015 syyskuu 2015
pl: września 2015 wrzesień 2015
Vì vậy, đối với những miền địa phương kiểm tra: 'en' và 'de' hoạt động đúng chỉ với 'M', 'hu' là tốt với cả 'M' và 'L', 'nó' có lẽ tốt hơn với 'L' (không biết chữ cái quan trọng như thế nào ở đây), trong khi 'ru', 'fi' và 'pl' cho đầu ra chính xác chỉ với 'L' (điều này tôi thực sự có thể nói chỉ cho Nga và Ba Lan, nhưng tôi đoán nó tương tự như ở Phần Lan).
Câu hỏi:
Tôi có thể làm gì đó để làm cho
SimpleDateFormat
hoặc một định dạng ngày tháng tương tự như lớp điều trị 'L' đúng cho tất cả các miền địa phương?Ngoài ra, có cách nào đơn giản để biết liệu 'M' hoặc 'L' có nên được sử dụng cho bất kỳ ngôn ngữ cụ thể nào không?
Tôi không nói tiếng Nga nhưng bạn có nói rằng từ định danh 'M' đưa ra tên tháng không chính xác? Sự khác biệt về ý nghĩa giữa 'сентября' và 'Сентябрь' là gì? – Tunaki
Tương tự như tiếng Phần Lan. Tên của tháng là syyskuu. Nhưng nếu có một ngày đề cập đến nó phải là: 15. syyskuuta (đó là ý nghĩa của hình thức độc lập so với bối cảnh nhạy cảm). –
Bạn đang sử dụng phiên bản Java 8 nào? 'L' chỉ được giới thiệu trong Java 8, và trên máy của tôi, chương trình của bạn cũng tạo ra" Tháng Chín "cho' en' và 'de'. Có lẽ bạn có một phiên bản với các tệp miền địa phương đã lỗi thời? – RealSkeptic