【问题标题】:Swift iOS TimeZone as String?Swift iOS TimeZone 作为字符串?
【发布时间】:2019-01-04 02:14:57
【问题描述】:

如何从用户的 TimeZone 获取字符串,例如“Pacific/Auckland”?

我可以得到“NZST”的缩写

TimeZone.current.abbreviation()

但这是我需要的全名,如果我能得到的话。

【问题讨论】:

  • 您查看过TimeZone 的文档吗?有一个非常明显的属性。

标签: ios swift timezone


【解决方案1】:

其中一个应该适合你。

timeZone = TimeZone(abbreviation: "EST")
print(timeZone) // "some(America/New_York (current))\n"
print(timeZone.abbreviation()) // "Optional("EDT")\n"
print(timeZone.description) // "America/New_York (current)\n"
print(timeZone.identifier) // "America/New_York\n"

我相信您正在寻找最后一个。

【讨论】:

  • DateFormatter 的意义何在?您只需要TimeZone。问题是询问用户当前的时区。
  • 没错,它恰好在我的操场上。我会删除它。
【解决方案2】:
let timeZone = TimeZone(abbreviation: "NZST")
let identifier = timeZone?.identifier

这就是你要找的。​​p>

【讨论】:

    【解决方案3】:

    试着写...

    TimeZone.current.localizedName(for: .standard, locale: Locale.current)
    

    在第一个参数中,您可以选择不同的名称样式。我尝试过的仅有的两个是 .generic 和 .standard。

    我在这里找到了答案:How to get a user's time zone?

    希望对你有帮助。

    【讨论】:

    • 这不是请求的结果。
    • 我的错。对于 HenryRootTwo 的“NZST”,结果将是“新西兰标准时间”而不是“太平洋/奥克兰”。我喜欢你使用标识符属性的方式,但我认为他需要 TimeZone.current.identifier,因为在他的原始代码中,他试图检索的不是特定时区,而是用户的时区。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    相关资源
    最近更新 更多