gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:07:28 25 4
gpt4 key购买 nike

我对日期有疑问。

我确定这些毫秒 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com