简而言之
YearMonth.from(
LocalDate.parse( "2016-03-20" )
)
.format(
DateTimeFormatter.ofPattern(
"MMM uuuu" ,
Locale.US
)
)
2016年3月
java.time
避免使用麻烦的旧日期时间类,完全被java.time类所取代。
YearMonth
Java有一个表示年份和月份的类。奇怪的命名为YearMonth。
LocalDate ld = LocalDate.parse( "2016-03-20" ) ;
YearMonth ym = YearMonth.from( ld ) ;
定义所需输出的格式化模式。
指定一个Locale
。Locale
确定(a)用于翻译星期几、月份名称等人类语言,以及(b)决定缩写、大写、标点、分隔符等文化规范的问题。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM uuuu" , Locale.US ) ;
String output = ym.format( f ) ;
2016年3月
你可以在 LocalDate
上使用该格式化程序。但我假设你可能需要将年月作为一个概念进一步使用,因此 YearMonth
类可能会有用。
关于java.time
java.time框架内置于Java 8及以上版本。这些类取代了老旧的遗留日期时间类,如java.util.Date
, Calendar
, & SimpleDateFormat
。
Joda-Time项目现在处于维护模式,建议迁移到java.time类。
要了解更多信息,请参阅Oracle教程。并在Stack Overflow上搜索许多示例和解释。规范是JSR 310。
您可以直接与数据库交换java.time对象。使用符合JDBC 4.2或更高版本的JDBC驱动程序。不需要字符串,也不需要java.sql.*
类。
如何获取java.time类?
ThreeTen-Extra项目扩展了java.time的附加类。该项目是java.time可能未来添加的可能性的试验场。您可能会在这里找到一些有用的类,例如Interval
, YearWeek
, YearQuarter
和更多。
YearMonth
类。传递和使用该类的对象而不是字符串可以获得类型安全、有效值和自我记录代码。内置于Java中,因此您可以在整个代码库中使用。可以按照 Hajaj 的正确答案 中所示的方式进行格式化。 - Basil Bourque