在 Java 中获取 GMT 时间
在Java中,我想在GMT中获取当前时间。
我尝试了各种选项,如下所示:
Date date = new Date();
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
date1 = calendar.getTime();
但日期总是以我的本地时区解释。
我做错了什么,如何将java日期转换为GMT?
在Java中,我想在GMT中获取当前时间。
我尝试了各种选项,如下所示:
Date date = new Date();
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
date1 = calendar.getTime();
但日期总是以我的本地时区解释。
我做错了什么,如何将java日期转换为GMT?
在获取日期时,您在后端做了正确的事情,这很好,但没有任何迹象表明您没有占用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));
关键是使用您自己的DateFormat,而不是系统提供的DateFormat。这样,您就可以将 DateFormat 的时区设置为所需的时区,而不是将其设置为区域设置的时区。
我想知道为什么没有人这样做:
Calendar time = Calendar.getInstance();
time.add(Calendar.MILLISECOND, -time.getTimeZone().getOffset(time.getTimeInMillis()));
Date date = time.getTime();
更新:从Java 8,9,10及以上开始,Java应该支持更好的替代方案。感谢您的评论@humanity