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

java.util.Date.getTime()的问题,date,simpledateformat,Date,Simpledateformat,我对java日期和简化格式有疑问 我有一个应用程序,它以yearMonthDayHourMinute的格式将文件创建时间保持在GMT中。目前我在不同的时区(比如说IST)。因此,我想以GMT格式进行所有处理 下面的代码片段显示了如何将存储在对象中的日期转换为TimeInMillis > 1. SimpleDateFormat valueSDF = new SimpleDateFormat("yyyyMMddHHmm"); > 2. valueSDF.set

我对java
日期
简化格式
有疑问

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

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

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

不清楚你为什么认为它在“加”三个零,但我可以向你保证它不是。请注意,从Unix时代开始,1354785300毫秒将仅为376小时

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

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

这与你声称需要毫秒不符

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

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

不清楚你为什么认为它在“加”三个零,但我可以向你保证它不是。请注意,从Unix时代开始,1354785300毫秒将仅为376小时

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

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


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

感谢John的快速响应。我们的应用程序需要的正是毫秒,而不是秒。如果您可以尝试运行上面的代码段,您可以看到差异。@RRP:我可以看到差异,因为您要除以1000!但是如果你想要毫秒,你不应该除以1000。@John>我的应用程序需要实际的毫秒数,但不需要加上'000'(即1354785300)。所以我不得不将它除以1000,以便以所需的方式运行我的应用程序。@RRP:这不再是毫秒。那是几秒钟。我不知道该怎么说。。。1354785300是Unix纪元与给定日期/时间之间的秒数。这不是毫秒数。你做算术了吗?你难道看不出1354785300毫秒是一个非常小的时间量吗?(大约15天)?感谢John指出了较少的时间(15天)。实际上,这是我的申请中的一个问题。谢谢约翰的快速回复。我们的应用程序需要的正是毫秒,而不是秒。如果您可以尝试运行上面的代码段,您可以看到差异。@RRP:我可以看到差异,因为您要除以1000!但是如果你想要毫秒,你不应该除以1000。@John>我的应用程序需要实际的毫秒数,但不需要加上'000'(即1354785300)。所以我不得不将它除以1000,以便以所需的方式运行我的应用程序。@RRP:这不再是毫秒。那是几秒钟。我不知道该怎么说。。。1354785300是Unix纪元与给定日期/时间之间的秒数。这不是毫秒数。你做算术了吗?你难道看不出1354785300毫秒是一个非常小的时间量吗?(大约15天)?感谢John指出了较少的时间(15天)。实际上,这是我的申请中的一个问题。