我有以下日期对象:
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 ***\\
为什么?
答案 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没有提到闰秒。