在Java中,我想获得GMT的当前时间.
我试过这样的各种选项:
Date date = new Date();
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
date1 = calendar.getTime();
Run Code Online (Sandbox Code Playgroud)
但是日期总是在我当地的时区解释.
我做错了什么以及如何将java Date转换为GMT?
Edw*_*uck 33
很有可能你在获得日期时在后端做了正确的事情,但没有任何迹象表明你没有采用GMT时间并根据你机器当前的语言环境进行格式化.
final Date currentTime = new Date();
final SimpleDateFormat sdf =
new SimpleDateFormat("EEE, MMM d, yyyy hh:mm:ss a z");
// Give it to me in GMT time.
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("GMT time: " + sdf.format(currentTime));
Run Code Online (Sandbox Code Playgroud)
关键是要使用自己的DateFormat,而不是系统提供的.这样您就可以将DateFormat的时区设置为您想要的时区,而不是将其设置为Locale的时区.
Har*_*run 19
我想知道为什么没有人这样做:
Calendar time = Calendar.getInstance();
time.add(Calendar.MILLISECOND, -time.getTimeZone().getOffset(time.getTimeInMillis()));
Date date = time.getTime();
Run Code Online (Sandbox Code Playgroud)
更新:自Java 8,9,10及更多版本以来,Java应该有更好的替代方案.感谢您对@humanity的评论
根据我的经验,Java中捆绑的Calendar和Date类可以产生不良效果.如果您不介意升级到Java 8,请考虑使用ZonedDateTime
像这样:
ZonedDateTime currentDate = ZonedDateTime.now( ZoneOffset.UTC );
Run Code Online (Sandbox Code Playgroud)
Instant.now()
Run Code Online (Sandbox Code Playgroud)
Damilola的答案在建议您使用Java 8和更高版本中内置的java.time框架方面是正确的。但是,ZonedDateTime如果您只想使用UTC而不是任何特定的时区,那么Answer将使用过大的类。
麻烦的旧日期时间类现在已被遗留,由java.time类取代。
Instant该Instant级表示时间轴上的时刻UTC,分辨率为纳秒(最多小数的9个位数)。
简单的代码:
Instant instant = Instant.now() ;
Run Code Online (Sandbox Code Playgroud)
Instant.toString():2016-11-29T23:18:14.604Z
您可以将其Instant视为可添加时区(ZoneID)的构建基块ZonedDateTime。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
Run Code Online (Sandbox Code Playgroud)
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date,Calendar,和SimpleDateFormat。
现在处于维护模式的Joda-Time项目建议迁移到java.time。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
在哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。你可能在这里找到一些有用的类,比如Interval,YearWeek,YearQuarter,和更多。
| 归档时间: |
|
| 查看次数: |
100232 次 |
| 最近记录: |