java.time
TEXHIK 的The Answer 是正确的,但已过时。另外,正如其他人提到的,我不知道您所说的“通用和标准时间”是什么意思。但我会尽量让你走上正轨。
从 Java 8 开始,旧的 java.util.Date/.Calendar 类已被新的 java.time 框架取代。新类的灵感来自非常成功的Joda-Time 框架,该框架旨在作为其继任者,在概念上相似但经过重新架构。由JSR 310 定义。由ThreeTen-Extra 项目扩展。请参阅Tutorial。
ZonedDateTime 类有一个工厂方法,用于获取年、月等数字。
另外,您必须指定time zone。如果您的数字代表UTC 中的日期时间,请使用ZoneOffset.UTC 常量。对于其他时区,使用适当的时区名称指定ZoneId 对象;切勿使用 3-4 个字母的代码,例如 EST 或 IST,因为它们既不标准化也不独特。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
// ZoneId zoneId = ZoneOffset.UTC; // ZoneOffset is a subclass of ZoneId.
ZonedDateTime zdt = ZonedDateTime.of( 2015 , 1 , 2 , 3 , 4 , 5 , 6 , zoneId );
zdt: 2015-01-02T03:04:05.000000006-05:00[美国/蒙特利尔]
您可以转换为 UTC 或其他时区。
ZonedDateTime zdt_Kolkata = zdt.withZoneSameInstant ( ZoneId.of("Asia/Kolkata") );
ZonedDateTime zdt_Utc = zdt.withZoneSameInstant ( ZoneOffset.UTC );
zdt_Kolkata:2015-01-02T13:34:05.000000006+05:30[亚洲/加尔各答]
zdt_Utc: 2015-01-02T08:04:05.000000006Z
如果使用尚未针对 java.time 更新的类,请转换为 java.util.Date。首先提取一个Instant 对象,时间轴上的时刻总是在UTC。
java.util.Date date = java.util.Date.from ( zdt.toInstant () );