我想用不同语言(包括土耳其语)设置带有月份名称和本地化标签的日期格式,
如何设置几个月的格式化标签
SimpleDateFormat
构造函数 获取 Locale
。
SimpleDateFormat sdf = new SimpleDateFormat("dd MMMM yyyy", new Locale("tr"));
String date = sdf.format(new Date());
System.out.println(date); // 27 Eylül 2011
Locale
接受ISO-639-1语言代码。
public static void main(String Args[]) {
String text = "Çar, 11 Eyl 2013 19:28:14 +03:00";
try {
Date sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss", new Locale("tr")).parse(text);
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = DATE_FORMAT.format(sdf);
System.out.println(date);
} catch (ParseException ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
存在严重缺陷的遗留日期时间类,例如
Calendar
、Date
和 SimpleDateFormat
多年前就被 JSR 310 中定义并内置于 Java 8+ 中的现代 java.time 类所取代。
对于仅日期值,没有时间,没有时区或与 UTC 的偏移量,请使用
java.time.LocalDate
类。
LocalDate localDate = LocalDate.of( 2025 , 1 , 23 ) ; // January 23, 2025.
要生成自动本地化文本,请获取
DateTimeFormatter
对象。为本地化中使用的人类语言和文化规范指定 Locale
。
Locale locale = new Locale( "tr" , "TR" ) ; // Turkish language, Turkey cultural norms. In modern Java, use `Locale.of` instead of constructor.
DateTimeFormatter formatter =
DateTimeFormatter
.ofLocalizedDate( FormatStyle.FULL )
.withLocale( locale ) ;
生成文本。
String output = localDate.format( formatter ) ;
System.out.println( output ) ;
System.out.println( localDate.toString() ;
查看代码在 Ideone.com 中运行。
23 奥卡克 2025 年佩尔森贝
2025-01-23