java.util.Date.getTime()的问题

时间:2012-12-06 14:03:59

标签: date simpledateformat

我怀疑java DateSimpleDateFormat

我有一个应用程序,它以 yearMonthDayHourMinute 的格式将文件创建时间维持在 GMT 。目前我在一个不同的TimeZone(说IST)。所以我想以GMT格式进行所有处理。

以下代码段显示,我如何检索将存储在我的对象中的日期转换为TimeInMillis。

>        1. SimpleDateFormat valueSDF = new SimpleDateFormat("yyyyMMddHHmm");
>        2. valueSDF.setTimeZone(TimeZone.getTimeZone("GMT"));
>        3. Date date = valueSDF.parse("201212060915");
>        4. System.out.println("date.getTime():  "+ date.getTime());   // returns 1354785300000
>        5. String fileCreationTime= Long.toString((date.getTime()/1000));
>        6. System.out.println("time :: "+ fileCreationTime);   // returns 1354785300

以毫秒为单位的检索到的时间值(步骤#4)具有额外的三个尾随零。我的应用程序需要的是结果除以1000.(步骤#5)

我很想知道为什么date.getTime()会在结果中附加更多的零。 堆栈专家,请分享您的建议!

1 个答案:

答案 0 :(得分:4)

  

我很想知道,为什么date.getTime()会在结果中附加更多的零。

没有。它给出了自Unix纪元以来毫秒的数量。如果您需要自1970年1月1日,UTC午夜的Unix纪元以来的数量,则需要除以1000.如果您想要毫秒(如您所声称的那样),则不要除以1000。这就是它的全部 - 它的行为完全符合预期。

目前尚不清楚为什么你认为它“增加”了三个零,但我可以向你保证它不是。请注意,自Unix纪元以来,1354785300毫秒只有376 小时 ...

您提供的日期(2012年12月6日,UTC时间上午9:15)自Unix纪元以来 1354785300000毫秒。为什么你期望得到1354785300的结果?

  

我的应用程序需要的是结果除以1000

这与您声称它需要毫秒不相符。