java - 如何将毫秒转换为相应的日期?

标签 java date gmt

我对日期有疑问。

我确定这些毫秒 1317322560000 代表意大利 2011 年 9 月 29 日星期四 18:56:00 GMT+02:00 的日期。

但是使用 Calendar 类,日期是 9 月 29 日星期四 20:56:00 GMT+02:00。我认为发生这种情况是因为夏季赛程已经生效。

如何将毫秒转换为相应的日期?

最佳答案

System.currentTimeMillis()返回“当前时间与 UTC 时间 1970 年 1 月 1 日午夜之间的差异(以毫秒为单位)”。 (即格林尼治标准时间)。

所以您的“日期”1317322560000 是 29/09/2011:18:56:00 GMT。在意大利,9 月 29 日与 GMT 的偏移量为 +2 小时(因为“夏令时”或从技术上来说 DST = Daylight Saving Time )。从 30/10/2011:03:00:00(顺便说一下,下周日)开始,在意大利,他们将处于“冬令时”(无 DST),因此偏移量将为 +1)。

因此,您正确地得到了 Thu Sep 29 20:56:00 CEST 2011(18:56:00 + 意大利时区偏移 2 小时)。请检查显示所有这些内容的代码(它是 Groovy)。

import java.text.DateFormat
import java.util.TimeZone

println Locale.getDefault()
Date d = new Date(1317322560000)
println d
Locale.setDefault(new Locale("it", "IT"))
println Locale.getDefault()

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
println df.getTimeZone().getOffset(1317322560000) + " => +2h offset in 'summer time' (DST on)"

df.setTimeZone(TimeZone.getTimeZone("GMT+00:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("GMT+01:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("GMT+02:00"))
println df.format(d)
df.setTimeZone(TimeZone.getTimeZone("Europe/Rome"))
println df.format(d)
println "---"

Date winterDate = new Date(1321382560000)
println winterDate
println df.getTimeZone().getOffset(1321382560000) + " => +1h offset in 'winter time' (DST off)"

结果:

es_ES
Thu Sep 29 20:56:00 CEST 2011
it_IT
7200000 => +2h offset in 'summer time' (DST on)
giovedì 29 settembre 2011 18.56.00 GMT+00:00
giovedì 29 settembre 2011 19.56.00 GMT+01:00
giovedì 29 settembre 2011 20.56.00 GMT+02:00
giovedì 29 settembre 2011 20.56.00 CEST
---
Tue Nov 15 19:42:40 CET 2011
3600000 => +1h offset in 'winter time' (DST off)

关于java - 如何将毫秒转换为相应的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927150/

相关文章:

sql - 从序列号生成日期

mysql - 允许用户从选择框中选择 SET time_zone

c# - 用户日期时间设置为 GMT,如何将日期转换为本地化设置?

java - 更改算法

java - 在 Play! 中呈现表单时添加附加信息! 2.0.2

bash - 向 bash 脚本添加 Debug模式

mongodb - 根据日期范围按日/月/周分组

java - 使用 Java 的 OAuth 2.0 和 Google Spreadsheet API 的示例是什么?

java - 尽可能快地发送数据包时 Rust 与 Java 中的不同网络行为

mysql - 如何从 MySQL 中的日期时间中减去小时数?