0

我对 javaDateSimpleDateFormat.

我有一个应用程序,它以GMT格式维护其文件创建时间yearMonthDayHourMinute。目前我在不同的时区(比如说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() 会在结果中附加更多的零。堆栈专家,请分享您的建议!

4

1 回答 1

5

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

它没有。它给出了自 Unix 纪元以来的毫秒数。如果您需要自 1970 年 1 月 1 日午夜 UTC 的 Unix 纪元以来的秒数,则需要除以 1000。如果您想要毫秒(如您所说),则不要除以 1000。仅此而已-它的行为完全符合预期。

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

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

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

这与您声称它需要毫秒的说法不符。

于 2012-12-06T14:06:04.060 回答