tl;博士
使用取代 的现代 java.time 类。GregorianCalendar
GregorianCalendar.from( // Convert from modern object to legacy class object.
myGregorianCalendar.toZonedDateTime() // Convert from legacy to modern.
) // Returns a new `GregorianCalendar` object.
但最好完全停止使用,只使用.GregorianCalendar
ZonedDateTime
ZonedDateTime
这个可怕的类在几年前被JSR 310中定义的java.time类所取代。专门替换为 ZonedDateTime
类。GregorianCalendar
您可以使用添加到旧类的新/方法来回转换。to…
from…
ZonedDateTime zdt = myGregorianCalendar.toZonedDateTime() ;
朝另一个方向走。
GregorianCalendar myGregorianCalendar = GregorianCalendar.from( zdt ) ;
要具体解决您的问题,请结合这两个转换以获取另一个对象。GregorianCalendar
GregorianCalendar gc = GregorianCalendar.from( myGregorianCalendar.toZonedDateTime() ) ;
关于 java.time
java.time 框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧旧日期时间类,如java.util.Date
,Calendar
和SimpleDateFormat
。
要了解更多信息,请参阅 Oracle 教程。搜索 Stack Overflow 以获取许多示例和解释。规格是JSR 310。
Joda-Time 项目现在处于维护模式,建议迁移到 java.time 类。
您可以直接与数据库交换 java.time 对象。使用符合 JDBC 4.2 或更高版本的 JDBC 驱动程序。不需要字符串,不需要类。java.sql.*
从哪里获取 java.time 类?
ThreeTen-Extra 项目通过其他类扩展了 java.time。这个项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。