据我所知,Java中的Date.getTime()将返回自EPOCH以来的millis,将日期视为UTC日期。
在Java 6上,我有一个Date,如果我执行Date.getTime(),它会返回自EPOCH以来的millis,考虑到Date在PDT时区。 (运行代码的服务器在PDT时间内配置。)
我希望程序将其视为UTC日期并返回自EPOCH以来的毫秒数。
以下是我的代码段和输出:
logger.debug("Date: " + someDate);
logger.debug("someDate in millis): " + someDate.getTime());
Output:
Date: 2016-08-19 12:04:56.993
someDate in millis: 1471633496993 //This is time since EPOCH for 2016-08-19 12:04:56.993 PDT
虽然我希望它返回millis为1471608296993(1471608296993,自EPOCH以来为UTC日期:2016-08-19 12:04:56.993)
简而言之,我想从EPOCH获得毫无疑问,无论当地时区如何,在我的情况下都是PDT。
请帮忙。
答案 0 :(得分:2)
根据Java Doc getTime(
)
返回自1970年1月1日00:00:00以来的毫秒数 GMT
它不使用本地时区
答案 1 :(得分:1)
除了johnhopkins已经说过的内容之外。
var and = document.querySelectorAll(".one.two");
var or = document.querySelectorAll(".one, .two");
var xor = document.querySelectorAll(".one:not(.two), .two:not(.one)");
var nor = document.querySelectorAll("button:not(.one):not(.two)");
对象将时间存储在Date
中。但是当你打印出来时,它将被打印为你当前时区的日期。
以下代码段演示了它。
milliseconds since January 1, 1970, 00:00:00 GMT
输出
Calendar cal = GregorianCalendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.set(Calendar.YEAR, 2016);
cal.set(Calendar.MONTH, Calendar.AUGUST);
cal.set(Calendar.DAY_OF_MONTH, 19);
cal.set(Calendar.HOUR_OF_DAY, 12);
cal.set(Calendar.MINUTE, 4);
cal.set(Calendar.SECOND, 56);
cal.set(Calendar.MILLISECOND, 993);
long epochMillis = cal.getTime().getTime();
System.out.println("EPOCH millis = " + epochMillis);
System.out.println("date from cal = " + cal.getTime());
Date date = new Date(epochMillis);
System.out.println("date from epoch = " + date);
两行EPOCH millis = 1471608296993
date from cal = Fri Aug 19 14:04:56 CEST 2016
date from epoch = Fri Aug 19 14:04:56 CEST 2016
使用您的默认时区打印日期date from ...
。
答案 2 :(得分:0)
使用this answer到this question的信息,我能够提供能够正确解析String
作为UTC日期时间的代码。诀窍是在创建SimpleDateFormat
对象之前使用String
对象来解析Date
:
String strDate = "2016-08-19 12:04:56.993";
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = isoFormat.parse(strDate);
System.out.println(date);
System.out.println(date.getTime());
输出:
Fri Aug 19 08:04:56 EDT 2016
1471608296993