作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对日期有疑问。
我确定这些毫秒 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/
我是一名优秀的程序员,十分优秀!