- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
CE-6ren">
UIKit 提供了 TimeZone.secondsFromGMT() 方法,它只返回 GMT 时间的秒数。
截至 10 月 27 日,该函数返回不正确的值,当时欧洲离开了夏令时 (CEST-> CET)。目前返回 3600,10 月 27 日之前,正确返回 7200。
此函数应始终返回与当前时区无关的常量值 7200(夏令时更改时区,而不是时区本身)。即使欧洲在冬天进入 CET 时间,CEST 时间也没有改变(欧洲现在不“使用”它)。
此行为破坏了我的单元测试,因此破坏了应用程序的正确性。
实际上这应该总是通过:
让 timeZone = TimeZone(缩写:“CEST”)!XCTAssertTrue(timeZone.secondsFromGMT() == 7200)
我是不是想错了?
最佳答案
你的误解在这里:
(Daylight savings change timezones, not timezone itself). Even if Europe went to the CET time during the winter, CEST time didn’t change (Europe just doesn’t “use” it now).
您所说的是补偿。 TimeZone
对象能够表示偏移量,即通过使用 init(secondsFromGMT:)
初始化程序创建一个。但在大多数情况下,考虑时区(例如 Europe/Paris
)更有用。
init(abbreviation:)
只是查找您在 TimeZone.abbreviationDictionary
中传递的字符串,并将查找到的值用作时区标识符。通过简单的检查,您会发现在字典中,CEST
对应于值 Europe/Paris
。
标识符Europe/Paris
代表法国采用的时区。使用此标识符创建的 TimeZone
对象封装了所有历史偏移量转换以及 future 转换的转换规则(例如“DST 在 10 月 25 日或之后的第一个星期日结束”)。
换句话说,TimeZone
对象不仅仅是距 GMT 的秒数。它更像是一个数学函数,将时间点映射到本地日期时间。这个函数大部分是连续的,除了发生偏移转换的那些时间点。
如果您只想要 7200 秒的恒定偏移量,请执行以下操作:
TimeZone(secondsFromGMT: 7200)
关于swift - "CEST"时区在向/从夏令时转换期间将偏移量更改为 GMT(不应该),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603747/
在 /usr/share/lib/zoneinfo 下 我可以看到以下 4 种不同类型的 GMT 信息 GMT GMT+0 GMT-0 GMT0 这 4 种 GMT 区域时间之间有什么区别吗?如果是这
我有这样的输入格式,我需要将其转换为 GMT 格式: $input = array( "gmt" => "+7", "datetime" => "2017-
我尝试了以下代码,应该允许我将时间传递作为参数转换为一个多一小时 (GMT+1) 的字符串。 但我总是得到与我对象时间相同的时间 public static String getFormattedTi
为什么 GMT-0400 在 1989 年之前转变为 GMT-0500? > new Date('1989-04-02T23:01:14.52Z') Sun Apr 02 1989 19:01:14
我从服务器获取日期字符串及其 GMT+2 我认为无法转换为印度 GMT 5:30 格式 这是服务器日期字符串 2017-01-11T05:08:15.157Z 我想要印度时间格式的这个我已经尝试了下面
我每分钟运行一个任务,我想打印出当前 GMT 时间和 9PM GMT 之间的差异,我希望它一直运行,所以一旦到达 9PM GMT,它就会重置为 24 小时所以它正在寻找第二天晚上 9 点(格林威治标准
在这方面遇到了困难,尝试了所有这些不同的日期函数,但不知道如何确定地做到这一点。 最佳答案 您可以使用calendar.timegm来获取自纪元以来的秒数。时间元组是必需的参数,time.strpti
我知道有多种方法可以将日期时间转换为 Unix 时间戳。 但问题是当我们将 GMT 的日期时间值转换为 Unix 时间戳时,它会根据我本地时区的值显示时间戳的值,即 Asia/Kolkata 例如:G
当我将 user_login_date 存储到数据库中时,它是 GMT +5:30,但我的数据库设置为 GMT 0:00 用户在 12:00:00 登录但数据库将该日期存储为 07:30:00 的示例
当我使用“日期”命令时,我们的服务器提供 GMT 时间。但是我现在的时间应该是GMT+8。如何将当前时间显示为 GMT+8?提前致谢。 最佳答案 将这样的一行添加到您的 .profile 文件中,然后
我正在使用此代码获取 android 设备的 timezone TimeZone tz = TimeZone.getDefault(); String current_Time_Zone = (Tim
我也想要 GMT 字符串的时间。 但我无法得到它。 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd/hh-mm"); dateForm
我也是 MVC3 和 C# 的新手。我将使用 C# 通过 MVC3 创建一个测试博客站点。用户可以在哪里写帖子,所以我需要存储用户帖子日期时间,并想在自己的本地时间显示每个其他用户的日期时间。对于这种
我在使用 PHP DateTime 将 GMT -8 时区 (PST) 接收的日期转换为 GMT -7 (PDT) 时区的人类可读格式时遇到困难。 这是一个例子: $tz = new DateTime
例如,我想解析下面的字符串: Tue Sep 28 18:02:24 GMT+08:00 2010 我使用 SimpleDateFormat 的模式: new SimpleDateFormat("EE
我正在尝试使用 html 输入中的信息查询数据库。日期的格式为: Date {Sun Jun 03 2012 00:00:00 GMT+0100 (GMT Daylight Time)} 在我
我有一种情况,我收到以下格式的字符串形式的日期。 “2014 年 1 月 13 日星期一 00:00:00 GMT+0000(GMT 标准时间)” 我需要在 c# 中将其转换为以下格式(日期/字符串)
我能够从完整的字符串名称“Australia/Brisbane”中获取 Java 中的时区对象 TimeZone tz = TimeZone.getTimeZone("Australia/Brisba
我能够从完整的字符串名称“Australia/Brisbane”中获取 Java 中的时区对象 TimeZone tz = TimeZone.getTimeZone("Australia/Brisba
我有这些数据可供使用: Timezone of local time as integer: 8.75 (which is UTC+8.75) 1) 2012-09-04 03:15:03 2) 20
我是一名优秀的程序员,十分优秀!