java 获取时间gmt时间_如何获得UTC或Java GMT中的当前日期和时间?

30f093424b19cec27b5f4b69d4d94545.png

郎朗坤

Instant.now()   // Capture the current moment in UTC.生成一个字符串来表示该值:Instant.now().toString()2016-09-13T23:30:52.123Z细节如乔恩·斯基特的正确答案声明,java.util.Date对象具有无时区†..但它toString实现在生成该日期-时间值的字符串表示时应用JVM的默认时区。令人困惑的是天真的程序员,约会似乎有时区但没有时区。这个java.util.Date, j.u.Calendar,和java.text.SimpleDateFormat与Java捆绑在一起的类是出了名的麻烦。避开他们。相反,可以使用以下任何一种有效的日期库:java.time.*Java 8包尤达-时间java.time(Java 8)Java 8带来一个极好的新java.time.*包替换旧的java.util.Date/Calendar类。在UTC/gmt中获取当前时间是一个简单的单线…。Instant instant = Instant.now();那,那个Instant类是java.time中的基本构建块,表示世界协调时决心纳秒.在Java 8中,捕捉当前时刻的分辨率仅为毫秒。Java 9带来了新的实现的Clock根据您的主机时钟硬件的能力,以最高可达纳秒的能力捕捉当前的时刻,这取决于您的主机的时钟硬件的能力。它是toString方法生成其值的字符串表示形式。一种特定的ISO 8601格式..该格式输出零、三、六或九位数字(毫秒, 微秒,或纳秒)表示秒的分数。如果您想要更灵活的格式设置或其他附加功能,则对UTC本身应用从-UTC到-UTC的偏移量为零(ZoneOffset.UTC常量)得到一个OffsetDateTime.OffsetDateTime now = OffsetDateTime.now( ZoneOffset.UTC );转储到控制台…System.out.println( "now: " + now );运行…时now: 2014-01-21T23:42:03.522Z时间类由JSR 310..他们的灵感来源于Joda-Time,但完全是重新设计的。尤达-时间更新:尤达-时间项目,现在在维护模式,建议迁移到java.time上课。使用尤达-时间第三方开放源码免费库,您只需一行代码就可以得到当前的日期时间。Joda-Time在Java 8中启发了新的java.time.*类,但是有一个不同的体系结构。您可以在Java的旧版本中使用Joda-time。Joda-Time继续在Java 8中工作,并继续积极维护(截至2014年)。然而,Joda-time团队确实建议迁移到java.time。System.out.println( "UTC/GMT date-time in ISO 8601 format: " + new org.joda.time.DateTime( org.joda.time.DateTimeZone.UTC ) );更详细的示例代码(Joda-Time2.3)…org.joda.time.DateTime now = new org.joda.time.DateTime();

 // Default time zone.org.joda.time.DateTime zulu = now.toDateTime( org.joda.time.DateTimeZone.UTC );转储到控制台…System.out.println( "Local time in ISO 8601 format: " + now );System.out.println( "Same moment in UTC (Zulu): " + zulu );运行…时Local time in ISO 8601 format: 2014-01-21T15:34:29.933-08:00

Same moment in UTC (Zulu): 2014-01-21T23:34:29.933Z有关执行时区工作的代码的更多示例,请参见我的回答一个类似的问题。时区我建议您始终指定时区,而不是隐式地依赖JVM当前的默认时区(可以随时更改!)。这种依赖似乎是造成日期工作中混乱和错误的一个常见原因。打电话时now()传递要分配的期望/预期时区。使用DateTimeZone班级,等级。DateTimeZone zoneMontréal = DateTimeZone.forID( "America/Montreal" );DateTime now = DateTime.now( zoneMontréal );那个类拥有一个UTC常数时区。DateTime now = DateTime.now( DateTimeZone.UTC );如果您真的想使用JVM当前的默认时区,请进行显式调用,这样您的代码就可以自我记录。DateTimeZone zoneDefault = DateTimeZone.getDefault();ISO 8601读到ISO 8601格式。java.time和Joda-time都使用该标准的合理格式作为解析和生成字符串的默认格式。†实际上,java.util.Date是吗?有一个时区,深埋在层下的源代码。为了大多数实际目的,这个时区被忽略了。因此,简单地说,java.util.Date没有时区。此外,埋藏的时区是不日期所用的toString方法;该方法使用JVM当前的默认时区。更有理由避免这个令人困惑的类,而坚持使用Joda-time和java.time。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值