当我创建一个新的Date对象时,它被初始化为当前时间,但在本地时区。如何获得当前的GMT日期和时间?
当前回答
以下是乔恩·斯基特的回答中似乎不正确的地方。他说:
date始终使用UTC。你凭什么认为它是本地的 时间吗?我怀疑问题在于您通过 使用本地时区的Calendar实例,或者可能使用 Date.toString(),它也使用本地时区。
然而,代码:
System.out.println(new java.util.Date().getHours() + " hours");
给出的是本地时间,而不是GMT (UTC)时间,完全没有使用Calendar和SimpleDateFormat。
这就是为什么看起来有些事情是不正确的。
把这些回答放在一起,代码如下:
System.out.println(Calendar.getInstance(TimeZone.getTimeZone("GMT"))
.get(Calendar.HOUR_OF_DAY) + " Hours");
显示GMT时间而不是本地时间——请注意,getTime.getHours()缺失,因为这将创建一个Date()对象,该对象理论上以GMT存储日期,但返回本地时区的小时。
其他回答
public static void main(String args[]){
LocalDate date=LocalDate.now();
System.out.println("Current date = "+date);
}
这适用于在Android中获取UTC毫秒。
Calendar c = Calendar.getInstance();
int utcOffset = c.get(Calendar.ZONE_OFFSET) + c.get(Calendar.DST_OFFSET);
Long utcMilliseconds = c.getTimeInMillis() + utcOffset;
使用java。时间包和包括以下代码-
ZonedDateTime now = ZonedDateTime.now( ZoneOffset.UTC );
or
LocalDateTime now2 = LocalDateTime。now (ZoneOffset。UTC);
这取决于您的应用程序需要。
下面是另一种以字符串格式获取GMT时间的方法
String DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z" ;
final SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String dateTimeString = sdf.format(new Date());
以下是乔恩·斯基特的回答中似乎不正确的地方。他说:
date始终使用UTC。你凭什么认为它是本地的 时间吗?我怀疑问题在于您通过 使用本地时区的Calendar实例,或者可能使用 Date.toString(),它也使用本地时区。
然而,代码:
System.out.println(new java.util.Date().getHours() + " hours");
给出的是本地时间,而不是GMT (UTC)时间,完全没有使用Calendar和SimpleDateFormat。
这就是为什么看起来有些事情是不正确的。
把这些回答放在一起,代码如下:
System.out.println(Calendar.getInstance(TimeZone.getTimeZone("GMT"))
.get(Calendar.HOUR_OF_DAY) + " Hours");
显示GMT时间而不是本地时间——请注意,getTime.getHours()缺失,因为这将创建一个Date()对象,该对象理论上以GMT存储日期,但返回本地时区的小时。
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- 解析日期字符串并更改格式
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?