我使用的是“亚洲/曼谷”区域id。该偏移是从格林尼治时间UTC 07:00开始的。
但是当我做了下面的事情时,设置为“01/01/1900 7:00:00.000”时不是7:00
java prettyprint-override">SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss.SSS");
Date date = dateFormat.parse("01/01/1900 7:00:00.000");
System.out.println(date);
System.out.println(date.getTimezoneOffset());
Date date2 = dateFormat.parse("01/01/1900 6:00:00.000");
System.out.println(date2);
System.out.println(date2.getTimezoneOffset());
结果就是
周一一月一日07:00:00 ICT 1900
-402
周一一月一日06:00:00 ICT 1900
-420
我想知道偏移量是否在1900年1月1日早上7点左右发生了变化,所以我在维基百科上查了一下。https://en.wikipedia.org/wiki/Time_in_Thailand
当时是UTC 6:42,但从1880年到1920年。
我有3个问题。
Java每个版本的运行时时区信息可在此处获得https://www.oracle.com/java/technologies/tzdata-versions.html
在链接文件中(针对特定版本),您可以找到所使用的实际数据的链接
https://www.iana.org/time-zones/repository/releases/tzcode2021a.tar.gz
https://www.iana.org/time-zones/repository/releases/tzdata2021a.tar.gz
https://www.iana.org/time-zones/repository/releases/tzdb-2021a.tar.lz
在tzdata*.tar.gz
中,您可以找到一个名为Asia
的文件,其中也包含曼谷的数据。
里面有这些条目
# Thailand
# Zone NAME STDOFF RULES FORMAT [UNTIL]
Zone Asia/Bangkok 6:42:04 - LMT 1880
6:42:04 - BMT 1920 Apr # Bangkok Mean Time
7:00 - +07
Link Asia/Bangkok Asia/Phnom_Penh # Cambodia
Link Asia/Bangkok Asia/Vientiane # Laos
因此,1920年1月4日之前的所有日期都应使用-402时区,但实现似乎只使用1/1/1900 0:00:00.000 UTC(从时区中的1/1/1900 6:42:04.000)到时区中的1920年1月4日的-402偏移量,否则使用-420。我不确定这是有意的还是一个bug。
我怎么能忽略不同的时间偏移在同一时区。
如果您在应用程序中实际使用时区进行任何计算,那么您可能不应该忽略它们。但是,如果您正在制作一个只在本地时区使用的应用程序,那么您可以使用一个没有时区信息的DateTime类,例如java。时间LocalDateTime
。同样值得注意的是:即使这些时区是正确的,历史日期也可能不准确,因为现代时间规则适用于所有时间(见下文)。因此,最终这取决于您的用例是什么。
ISO-8601日历系统中没有时区的日期时间。ISO-8601日历系统是当今世界大部分地区使用的现代民用日历系统。它相当于公历的前身,即今天的闰年规则在任何时候都适用。对于今天编写的大多数应用程序,ISO-8601规则完全适用。然而,任何使用历史日期并要求其准确的应用程序都会发现ISO-8601方法不合适。
问题内容: 我知道相反。给定一个时区,我可以通过以下代码片段获取时区偏移量: 我想知道如何从时区偏移量获取时区名称。 鉴于 (以毫秒为单位; +6.00偏移) 我想得到以下任何可能的时区名称的结果: 问题答案: 用
问题内容: 我的要求是这样的: 我在数据库和时区中以毫秒为单位保存时间,例如以毫秒为单位的时间 很长,而时区为。我必须将其转换为时区。 要检查我引用此:链接 我的问题是: 如果时区只是不同格式的时间表示(地理区域偏离GMT),为什么我需要从实际时间中减去偏移时间? 为什么我不能忽略保存在数据库中的时区,而只考虑要转换日期的时区? 就像是: 我的系统时区是,我想将时区中的日期转换为时区。以上代码在这
JSON-API-response包含以下属性: 我使用Moshi和ThreeTenBp解析时间戳,并准备了以下自定义适配器: 如您所见,区域偏移量在这里是硬编码的。 ... 使用Moshi和Kotlin的高级JSON解析技术 相关项目的进行中的分支
一切都清楚一次是UTC中的日期:
问题内容: 在我的客户中,我有以下代码: 这两条线接连地运行。我从不设置时区或手动设置,仅依靠从OS和本地系统读取的默认设置。 执行后,它们产生: 系统时区确实是Phoenix,而不是UTC。Joda如何正确而JDK如何错误? 编辑 :这是Windows 7 x64主机,JRE是1.6.22 x64。 编辑2 :不要尝试复制它。它只会在某些系统上失败,而不是在所有系统上失败(例如3k用户群中的几十
我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。