tl;博士
String output =
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.getDayOfWeek()
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
java.time
Java 8 及更高版本以及back-ported to Java 6 & 7 和to Android 中内置的java.time 类包括方便的DayOfWeek 枚举。
根据标准 ISO 8601 定义对天数进行编号,1-7 表示周一至周日。
DayOfWeek dow = DayOfWeek.of( 1 );
此枚举包含getDisplayName 方法,用于生成本地化翻译日期的字符串。
Locale 对象指定用于翻译的人类语言,并指定文化规范以决定大小写和标点符号等问题。
String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
要获取今天的日期,请使用 LocalDate 类。请注意,时区至关重要,因为对于任何给定时刻,日期在全球范围内都会变化。
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
DayOfWeek dow = today.getDayOfWeek();
String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
请记住,语言环境与时区无关。两个独立的不同正交问题。您可能想要在印度 (Asia/Kolkata) 的日期时间区域的法语演示文稿。
乔达时间
更新:Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
Joda-Time 库提供 Locale 驱动的日期时间值本地化。
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 );
输出:samedi
关于java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧 legacy 日期时间类,例如 java.util.Date、Calendar 和 SimpleDateFormat。
Joda-Time 项目现在位于maintenance mode,建议迁移到java.time 类。
要了解更多信息,请参阅Oracle Tutorial。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
从哪里获得 java.time 类?