- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的服务器在荷兰运行,但用户在英国使用该应用程序。
对于英国,2017-03-26 02:30:00 是有效的日期时间,但在荷兰则无效。
我正在使用代码通过设置时区来转换时间。但它没有给我正确的输出。
String toDate ="2017-03-26 02:30:00";//Valid Time in UK
Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Use London's time zone to format the date in
df.setTimeZone(TimeZone.getTimeZone("London"));
System.out.println("Date and time in London: " + df.parse(toDate));
程序输出:伦敦日期和时间:2017 年 CEST 3 月 26 日星期日 04:30:00
所需输出:伦敦日期和时间:Sun Mar 26 02:30:00 CEST 2017
使用的Java版本:1.7。无法对某些依赖项使用 joda 时间。
最佳答案
首先说明一下,TimeZone.getTimeZone()
是危险的,如果它不能识别ID字符串,它会默认给你GMT。确切地说,在伦敦,这与正确的结果非常接近,您可能会被愚弄一段时间。 TimeZone.getTimeZone("London")
为您提供 UTC(或 GMT)。正如 Stefan Freitag 指出的那样,正确的英国时区必须是 TimeZone.getTimeZone("Europe/London")
。
接下来是一个非常常见的误解:Date
对象中没有时区。这只是一个时间点。那么为什么它被打印为 Sun Mar 26 04:30:00 CEST 2017
,其中 CEST
显然指的是一个时区(中欧夏令时间,在荷兰使用) )?打印日期时,您隐式调用 Date.toString()
。该方法根据 JVM 的默认时区无条件打印时间。因此,为用于解析的 DateFormat
设置时区在这里不起作用。因此,正如 Hugo 在评论中所做的那样,更改 JVM 的时区设置是有效的。为英国用户获得正确输出的另一种方法是使用带有英国时区的 DateFormat
将日期格式化回字符串。
如果你一开始就使用Hugo的技巧,在创建DateFormat
之前,它也会有英国时区,并且你不需要调用df.setTimeZone()
(当然,如果您认为这会使代码更清晰,您也可以这样做)。
期待有一天能够使用 Java 8 或更高版本。 java.time 中的新日期和时间类通常不会像旧的那样带来惊喜。
关于java - 如何在荷兰等 CET 运行的服务器中处理英国夏令时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192330/
为什么DateFormat解析器无法解析CET? final String dateString = "Sat Jul 05 00:00:00 CET 1975"; final DateTime da
我有一个字符串日期列表列表,如下所示:'17/12/2017 19:34'。它们是 CET 日期。 如何将其转换为用户的浏览器日期? 我正在这样做: const tzGuess = moment.tz
我们的服务器在荷兰运行,但用户在英国使用该应用程序。 对于英国,2017-03-26 02:30:00 是有效的日期时间,但在荷兰则无效。 我正在使用代码通过设置时区来转换时间。但它没有给我正确的输出
这个问题在这里已经有了答案: Parsing a String to Date [duplicate] (4 个答案) 关闭 4 年前。 我正在尝试将此字符串转换为日期: 2016 年 3 月 1
我有三个不同的时间: 服务器时间 - “2014 年 2 月 19 日星期三 11:44 CET” 在服务器上开始 session 的时间 - “12:00h” 设备上的时间-“13:49” 我需要在
我在服务器上得到了一个 JSON,我尝试解析它。问题是有些日期看起来像: Tue, 03 Sep 2013 12:18:45 CEST 有些是: Sat, 17 Nov 2012 15:39:43 C
将本地时间转换为 UTC 很容易: var localTime = "2018-02-27 11:00"; moment(localTime).utc().format(); // result
我有一个脚本,在其中创建两个 Date 实例,第一个返回 CET 偏移时间戳中的日期,第二个返回 CEST 中的日期。我不明白为什么。 var start_date = new Date(2014,
我在时区和本杰明·富兰克林方面遇到了一些大麻烦。 我有一个包含 UTC 时间戳字段的表,没有存储时区。 我的目标是按星期几或按 n 小时之类的切片对该表的行进行分组。 我是如何进行到现在的: -- C
这个问题在这里已经有了答案: Convert Date/Time for given Timezone - java (16 个答案) 关闭 7 年前。 我想将 UTC 格式的日期转换为 CET 格
我需要将一些表从 MySQL 数据库移动到 PostgreSQL。所以我通过检查系统变量检查了MySQL服务器使用哪个时区: system time zone CET CET - 据我所知 -
我看到了这个帖子 Is Django corrupting timezone-aware DateTimeField when saving it to the Database?但它专门使用 pyt
要创建 UTC 日期对象,我们会这样写 new Date(Date.UTC(2012,02,30)); 如果没有 Date.UTC,它会采用 locale 并创建 Date 对象。如果我必须为在世界某
我有一个格式为 2018-03-19T06:00:00+01:00 的日期,该日期已经是 CET 时间。 当我将其保存在 Oracle 数据库列 timestamp 中时,与 CET 完全相同,并且再
奇怪的事情。我有 SQLite Android 数据库,其中日期保存为长值。我将它们读为日期对象,例如: new Date (cursor.getLong(4)) 接下来,在显示时,我使用 toStr
我有一些遗留的网络服务有时不会本地化日期。有时他们会这样做,所以我必须支持这两种情况。 它们应始终使用意大利的语言环境(标准时间为 UTC+1,夏令时为 UTC+2),但有时它们返回的日期会在日期 I
我对 JavaScript 中 Date 的 toString 方法有奇怪的行为。 我的同事有: const event = new Date('August 19, 1975 23:15:30');
我有将欧洲/布鲁塞尔时间转换为 UTC 的代码。这段代码会处理 CET 和 CEST 转换吗?即它是否也处理夏令时转换为 UTC?如果没有,有人可以建议如何处理吗? df['datetime'] =
如何将字符串“03/14/2016 12:41 CET”解析为日期时间对象? DateTime.TryParseExact(x, "mm/dd/yyyy hh:mm CET", null, Syst
我有两个时间序列文件,它们应该在 CET/CEST 中。其中不好的一个,没有以正确的方式写入值。对于好的 csv,请参见此处: #test_good.csv local_time,value ...
我是一名优秀的程序员,十分优秀!