简而言之
myGregCal // `GregorianCalendar` is a legacy class, supplanted by the modern `java.time.ZonedDateTime` class.
.toZonedDateTime() // Convert to `ZonedDateTime`.
.getDayOfWeek(). // Extract a `DayOfWeek` enum object, one of seven pre-defined objects, one for each day of the week.
.getDisplayName( // Automatically localize, generating a `String` to represent the name of the day of the week.
TextStyle.SHORT , // Specify how long or abbreviated.
Locale.US // Locale determines the human language and cultural norms used in localization.
) // Returns a `String` object.
Mon
LocalDate.now( ZoneId.of( "Africa/Tunis" ) ) // Get current date for people in a certain region, without time-of-day and without time zone.
.getDayOfWeek() // Extract a `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Generate a string representing that day-of-week, localized using the human language and cultural norms of a particular locale.
lundi
java.time
通过调用添加到旧类中的新方法,将麻烦的旧遗留{{link1:java.util.GregorianCalendar
}}对象转换为现代的java.time对象。
ZonedDateTime zdt = myGregCal.toZonedDateTime();
获取该时区中该时刻的DayOfWeek
枚举对象。
DayOfWeek dow = zdt.getDayOfWeek();
dow.toString(): 星期三
将这些DayOfWeek
对象传递到您的代码中,而不是传递像1-7这样的整数或像"MON"这样的字符串。通过使用枚举对象,您使您的代码更加自我记录,提供类型安全性并确保一系列有效值。
为了向用户呈现,请要求DayOfWeek
对象将一周中某天的名称翻译成在Locale
中定义的人类语言。
String output =
dow.getDisplayName(
TextStyle.FULL_STANDALONE ,
Locale.CANADA_FRENCH
)
;
mercredi
关于java.time
java.time框架内置于Java 8及更高版本中。这些类取代了老旧的传统日期时间类,如{{link3:java.util.Date
}}、{{link4:Calendar
}}和{{link5:SimpleDateFormat
}}。
Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。
想要了解更多,请参阅 Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规范是 JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。无需字符串,也不需要 java.sql.*
类。
如何获取 java.time 类?
DayOfWeek
枚举:DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, Locale.CANADA_FRENCH));
- Basil Bourque