java中将Date转换为TimeStamp的差异

时间:2014-05-06 07:29:43

标签: java date timestamp

我有以下日期对象:

Date date=new Date("Mon, 05 May 2014 12:31:12 +0000")

我想得到date对象的时间戳然后:

date.getTime()

1399293072000

但是这个值不正确,以下是正确的值:

1399276872000 
//*** for get timestamp use of http://www.epochconverter.com ***\\

为什么?

3 个答案:

答案 0 :(得分:4)

首先,来自JavaDoc for Date

Date(String s)
Deprecated. 
As of JDK version 1.1, replaced by DateFormat.parse(String s).

因此,自 1997 以来,您所使用的构造函数已被弃用!

接下来,进入construtor使用的JavaDoc for Date.parse

  

它接受许多语法;特别是,它承认IETF   标准日期语法:“星期六,1995年8月12日13:30:00 GMT”。它也是   了解美国大陆时区的缩写,但是   一般用途,应使用时区偏移:“1995年8月12日星期六   13:30:00 GMT + 0430“(格林威治以西4小时30分钟   子午线)。 如果未指定时区,则为本地时区   假设即可。 GMT和UTC被认为是等效的。

Empathsis mine。

那么,你在哪个时区?大概不是UTC。

答案 1 :(得分:0)

您应该在构建Date对象时指定本地时区

Example:
Date date=new Date("Mon, 05 May 2014 12:31:12 GMT+0530");

答案 2 :(得分:-1)

使用Mon,05 May 2014 12:31:12 +0000 http://www.epochconverter.com我得到1399285872000,这与你的时间戳不同。

或者你传递的是不同的值,或者某处有错误或

Unix纪元(或Unix时间或POSIX时间或Unix时间戳)是自1970年1月1日(午夜UTC / GMT)以来经过的秒数,不包括闰秒(ISO 8601:1970-01- 01T00:00:00Z)。

其中java.util.Date.getTime()的javadoc没有提到闰秒。