将毫秒转换为java日期的奇怪问题

将毫秒转换为java日期的奇怪问题,java,Java,您好,我正在尝试使用 新日期(百万秒) 我得到的转换值比预期值晚了3个小时 我尝试使用在线工具转换我的毫秒值,并将其转换为正确的日期。 有人能指出我错过了什么吗 thnxjava.util.Date没有一个小时——至少不是您可能的意思。尝试以下操作,您将看到日期只是一个时间点,可以指定为从历元开始的X毫秒: long millisec = System.currentTimeMillis(); Date date = new Date(millisec); long millisec2 = da

您好,我正在尝试使用
新日期(百万秒) 我得到的转换值比预期值晚了3个小时

我尝试使用在线工具转换我的毫秒值,并将其转换为正确的日期。 有人能指出我错过了什么吗


thnx

java.util.Date没有一个小时——至少不是您可能的意思。尝试以下操作,您将看到日期只是一个时间点,可以指定为从历元开始的X毫秒:

long millisec = System.currentTimeMillis();
Date date = new Date(millisec);
long millisec2 = date.getTime();
如果我在纽约市的时区打印这个日期,它将对应于一天中的某个小时。如果我用格林尼治标准时间打印相同的日期,那么小时将大四个小时。您打印值的方式可能会使您看到相同的时区效果

把约会想象成一个时间点。这是自epoch以来的特定毫秒数。让我们选择下午3点作为我们的时间点。这相当于美国东部夏令时下午6点。换句话说,所有这三个值(从历代开始的毫秒、下午3点的PDT和下午6点的EDT)在时间线上占据相同的位置


或者,这里有另一种解释。某一天的下午3点PDT与当天的美国东部夏令时下午3点不一样。假设下午3点PDT对应于自纪元以来的M毫秒。然后,美国东部夏令时下午3点=M-10800000毫秒(这是三小时内的千秒数)。

也许您有时区问题?如果你发布了有问题的代码,这会有所帮助……如果你没有显示你正在使用的任何代码,我们怎么可能告诉你你做错了什么?你是如何获得这个“毫秒”值的?