我怀疑java Date
和SimpleDateFormat
。
我有一个应用程序,它以 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()会在结果中附加更多的零。 堆栈专家,请分享您的建议!
答案 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
这与您声称它需要毫秒不相符。