- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从 GMT 偏移量(以秒为单位)开始,我想要相应时区的名称。我是说:
let offset = -28800
let tz = TimeZone(secondsFromGMT: offset)
let tzname = tz?.localizedName(for: .standard, locale: Locale.current)
我尝试了多种获取 tzname
的方法,但我得到的只是 GMT-05:00
。那不是我想要的。我希望有“东部标准时间”或“EST”之类的内容。有办法获取吗?
我不想想要通过某种反向地理编码。我希望系统能够简单地给我答案。 Stack Overflow 上对此类问题的其他回复似乎表明这是它应该做的,但它没有这样做。
最佳答案
您不能单独使用距 GMT 的秒数偏移量来唯一确定时区缩写。偏移量和时区之间不存在一一对应的关系。
这可能不会令人满意,但您可以通过迭代 knownTimeZoneIdentifiers
来获取匹配时区的列表。并查找匹配时区的列表:
let abbreviationsAndIdentifiers = TimeZone.knownTimeZoneIdentifiers
.compactMap { TimeZone(identifier: $0) }
.filter { $0.secondsFromGMT() == -28800 }
从那里,您可以使用 map
获取 abbreviation(for:)
, identifier
或localizedName(for:locale:)
分别获取 PST
、America/Los_Angeles
或 太平洋标准时间
(-28800
)。显然,上面的代码可能会根据偏移量和一年中的时间返回各种不同的匹配。
对 future 读者的一些注意事项:
时区缩写并不唯一。请参阅https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations您会看到相同的三个字母缩写映射到完全不同的时区。例如。 CST
可以表示“中部标准时间”(北美)、“古巴标准时间”或“中国标准时间”。
请注意,与 GMT 的偏移 -28800
将导致不同的时区(具体取决于一年中的不同时间)。例如。由于夏令时,-28800
将返回 1 月份的一组时区匹配,以及 7 月份的另一组时区匹配。考虑使用secondsFromGMT(for:)
,而是指定日期,以消除任何歧义。
关于ios - 来自偏移量的时区名称/缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60244220/
我想看看我的表中使用了哪些月份。我可以获得 id 和名称(见下文)没问题,但我无法提取 abrv。我在使用 %b 之前已经完成了,但似乎无法在此处获得语法。我哪里错了? SELECT DIST
我记得 PaulP 展示了一个很酷的技巧来缩写重复的长 @specialized序列,但我找不到原来的帖子了。就像我有 trait Foo[@specialized(Int, Float, Doubl
此 C# 声明的等效 F# 声明是什么: 使用 NR = ICSharpCode.NRefactory; 最佳答案 F# 中的缩写可以应用于模块: module ES = Microsoft.FSha
我正在 emacs 中编辑 Mathematica 代码。 Mathematica 对希腊字母的明文表示看起来像 \[Alpha], \[Beta], \[Gamma], ... 我不介意输入这些,但
我从 GMT 偏移量(以秒为单位)开始,我想要相应时区的名称。我是说: let offset = -28800 let tz = TimeZone(secondsFromGMT: offset) le
我正在 emacs 中编辑 Mathematica 代码。 Mathematica 对希腊字母的明文表示看起来像 \[Alpha], \[Beta], \[Gamma], ... 我不介意输入这些,但
对于kubectl describe我可以简写几类资源,例如: po/xxx -> pods/xxx rs/xxx -> replicasets/xxx 我在哪里可以找到完整列表? 我正在尝试查找部署
当 id 是我们对目标的全部了解时,将 UUID 缩写为在用户界面中的按钮中使用的好方法是什么? GitHub 似乎通过从开头取 7 个字符来缩写提交 ID。例如 b1310ce6bc3cc932ce
这个 C/C++ 简化测试用例: int x = ~~~; const double s = 1.0 / x; const double r = 1.0 - x * s; assert(r >= 0)
如果我有一个具有许多共享相同属性约束的属性的类,如下所示: class myClass { String thisString String thatString String
我正在研究 Java Card (SIM),并且正在使用 OTA 技术。有些表达方式我还没有一个很好的定义。 例如,当我在 SIM(用户身份模块)上加载小程序时,我使用 BIP 或 SMS。我知道短信
这个问题与这个问题是同一个问题(但是对于log4j2): log4j: abbreviate/shorten package names 最佳答案 这非常简单,记录在 http://logging.a
这个 C/C++ 简化测试用例: int x = ~~~; const double s = 1.0 / x; const double r = 1.0 - x * s; assert(r >= 0)
我刚刚查看了下面列出的 gcc-arm-none-eabi 编译器二进制文件,但我真的不知道所有使用的缩写。我想知道哪个二进制文件是预处理器、链接器、编译器等等... $ ls /opt/gcc-ar
缩写 UBER 是什么意思?我知道 UBER 是 BouncyCaSTLe-Keystore 等,但我不知道缩写是什么意思。 谢谢 最佳答案 我认为这是对德语单词“Über”(over 或 super
代码应该打印用户的姓名缩写,但代码有一个错误,而是打印出整个名称,每个字母之间有空格。我知道错误存在于 for 循环中,但我不知道如何调试这个问题。建议? int main(void) { prin
当我尝试在 for 循环中使用“i < n”时,出现错误(准确地说是 4)。如果我把它拿出来,我就会陷入无限循环。我似乎也无法运行 if 语句。对我可以改进的地方有什么想法吗? int main()
有没有办法缩写以下内容? if ($chk == 1 || $chk == 3 || $chk == 5 || $chk == 7){ do some stuff } 谢谢。 最佳答案 if (in_
如何在使用 log4j 生成的日志中缩写/缩短包名称。即,我想要 c.l.a.l.MyClass 而不是 com.longpackage.anotherpackage.lastpackage.MyCl
我正在使用 ReSharper 并试图遵守它的默认规则。 在我的部分代码中,我需要将字符串属性更改为 PascalCase。 我尝试了多种方法,但找不到一种适用于所有大写缩写的方法。 前任: MPSU
我是一名优秀的程序员,十分优秀!