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

app*_*ppu 0 date simpledateformat

我对 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
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*eet 5

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

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

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

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

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

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