这个 Swift TimeZone 作为另一个时区假设中的日期缩写有​​什么问题?

2023-11-29

在具有以下 Swift 代码的 Xcode Playground 中,我得到了带注释的输出。给定 MST TimeZone 对象和该 MST TimeZone 的 MDT TimeZone 中的日期,我没有收到预期的 MDT TimeZone 缩写输出。我对此函数不了解什么,以及如何获得所需的输出,以找出给定日期在给定当前示例 MST 时区的两个可能时区中的哪一个?

// Daylight saving time (MDT) 2021 in Colorado began at 2:00 AM on Sunday, March 14
let mstDate = Date(timeIntervalSinceReferenceDate: 636327068) // "Mar 1, 2021 at 2:31 PM"
let mdtDate = Date(timeIntervalSinceReferenceDate: 637709468) // "Mar 17, 2021 at 3:31 PM"
let mstTimeZone = TimeZone(abbreviation: "MST")!
let mdtTimeZone = TimeZone(abbreviation: "MDT")!

mstTimeZone.abbreviation(for: mstDate) // expected MST, got MST
mstTimeZone.abbreviation(for: mdtDate) // expected MDT, got *****MST*****?

mdtTimeZone.abbreviation(for: mstDate) // expected MST, got MST
mdtTimeZone.abbreviation(for: mdtDate) // expected MDT, got MDT

不要依赖时区缩写。 MST 的意思是“山地标准时间”,但它被解释为亚利桑那州凤凰城(“美国/菲尼克斯”),而不是科罗拉多州丹佛(“美国/丹佛”)。您应该始终使用时区标识符,而不是不明确的缩写。时区标识符不会根据日期而改变。您需要的是检查所需日期/时区是否是夏令时,并根据它获取时区本地化名称:

extension TimeZone {
    static let denverCO = Self(identifier: "America/Denver")!
    func localizedName(for date: Date) -> String { localizedName(for: isDaylightSavingTime(for: date) ? .daylightSaving : .standard, locale: .current) ?? "" }
    func localizedNameShort(for date: Date) -> String { localizedName(for: isDaylightSavingTime(for: date) ? .shortDaylightSaving : .shortStandard, locale: .current) ?? "" }
}

let mst = Date(timeIntervalSinceReferenceDate: 636327068) // "Mar 1, 2021 at 2:31 PM"
let mdt = Date(timeIntervalSinceReferenceDate: 637709468) // "Mar 17, 2021 at 3:31 PM"

TimeZone.denverCO.localizedName(for: mst)  // "Mountain Standard Time"
TimeZone.denverCO.localizedName(for: mdt)  // "Mountain Daylight Time"

TimeZone.denverCO.localizedNameShort(for: mst)  // "MST"
TimeZone.denverCO.localizedNameShort(for: mdt)  // "MDT"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这个 Swift TimeZone 作为另一个时区假设中的日期缩写有​​什么问题? 的相关文章

随机推荐

  • Android:无法播放mp4视频

    我正在尝试玩mp4 视频流使用本机从服务器视频查看 遗憾的是我不断收到 无法播放视频 error 奇怪的是 同一个视频在 Froyo 上播放得很好 但在 HoneyComb 上却无法播放 我用 MX Video Player 在 HC 上
  • Java邮件性能

    我一直在使用 javamail 从 IMAP 服务器 当前是 GMail 检索邮件 Javamail 非常快地从服务器检索特定文件夹中的消息列表 仅 ID 但当我实际获取消息 仅信封 甚至不包含内容 时 每条消息大约需要 1 到 2 秒 快
  • Oracle 的 Sonarqube Web UI 配置文件管理速度很慢

    在虚拟化环境 生产 上安装带有 Oracle 的 SonarQube 与具有相同发行版的其他安装相比 配置文件管理非常慢 当许多配置文件在此架构 虚拟化 Linux Oracle 上使用时 我将不胜感激有关此功能的响应时间的一些反馈 下面的
  • nextjs POSt API 无法在实时环境中工作,但在本地工作完美

    我最近开始学习使用 Nextjs 构建 Web 应用程序 因此我决定构建一个简单的应用程序来玩弄和学习 我在本地开发 一切都很完美 但是 当我部署到 vercel 时 POST 功能不起作用 该应用程序非常简单 它在主页上显示一些数据 并且
  • 计算大数的方差

    我还没有真正使用过方差计算那么多 而且我不太知道会发生什么 事实上我的数学一点也不好 我有一个包含 1000000 个 0 10000 范围内的随机数值的数组 该数组可能会变得更大 因此我使用 64 位 int 进行求和 我试图找到有关如何
  • ReactJS:[Home] 不是 组件。 的所有子组件都必须是

    单击 开始测验 按钮时 我试图导航到 quiz 但是 当我编译代码时 我在网站应用程序上收到以下错误 Home is not a
  • Android、OpenGLES、CmdLine 工具,获取 MainDisplay 分辨率

    环境 Windows x64 主机 Android 5 0 USB 连接到 Windows 机器 三星盖乐世 5 可视化GDB OpenGL v1 4 ADB CmdLine 工具 gt 本机 C 无 Java Use case 实现一个提
  • 多态对象的 JSON 使用者

    我正在解析 JSON 并且很难理解一种可以具有三种形式之一的结构 就我而言 它可以是零维 一维或二维 有什么方法可以即时检查 JSON 以确定它是哪一个吗 或者也许无论如何都要吃掉它 然后再弄清楚它是什么 这些结构看起来像这样 并且可以嵌入
  • R 将逗号分隔的单元格分成行和笛卡尔积

    I have mydf下面的数据框 我想拆分包含逗号分隔数据的任何单元格并将其放入行中 我正在寻找类似于的数据框y以下 我怎样才能通过几个步骤有效地完成它 目前我正在使用cSplit一次在一列上运行 I tried cSplit mydf
  • SKTextureAtlas 中的 SKTexture 是否支持 mipmap 功能?

    来自苹果文档 只有当两个纹理的尺寸都是 2 的幂时 您才能请求 mipmap 然而 目前尚不清楚 SKTextureAtlas 中的 SKTexture 是否也支持此功能 因为它们本质上有点不同 我问这个问题是因为实际上很难从结果中看出是否
  • 重载方法调用问题

    请让我知道 重载是编译时多态性 它考虑调用该方法的引用变量 假设如果我们有参数重载方法 那么将调用哪个重载方法将由我们调用方法的参数或对象抛出决定 请在下面找到我的代码 package com overload class Bird pub
  • 如何以及在哪里设置 MAXRECURSION 选项?

    我有一个查询耗尽了默认值MAXRECURSION限制为 100 给出以下错误消息 声明终止 在语句完成之前 最大递归次数 100 已用完 我发现我需要使用以下方法提高此 CTE 的限制OPTION MAXRECURSION xxx 但我不知
  • 如何获取使用 Windows.Services.Store 命名空间在 Windows 10 应用商店中发布的应用程序的试用许可证的到期日期?

    我有一个转换后的 Win32 应用程序发布在 Windows 10 应用商店中的试用许可证 我正在使用 C WRT 版本这段代码检索应用程序许可证信息 但由于某种原因截止日期成员IStoreAppLicense总是返回为9999 12 31
  • 如何在谷歌地图上动态绘制折线

    我无法在谷歌地图上绘制折线 我动态获取该值 var flightPlanCoordinates n new google maps LatLng q var flightPlanCoordinates new Array for i 0 i
  • CefSharp自定义SchemeHandler

    我使用 CefSharp 的 SchemeHandler 来从我的 C 项目中获取资源 例如 css js or png例如使用自定义 url 的文件custom cefsharp assets css style css 我有 2 个自定
  • Jquery - 如何裁剪图像并将其缩放为与原始图像相同的大小

    我想通过给出 xAxis yAxis Height Width 从原始图像中裁剪图像 所有裁剪后的图像应与下面的框一样大 2 并将裁剪后的部分设置为固定大小 这样无论用户给出的高度和宽度如何 我都可以在网络上有序地显示这些裁剪后的图像 我尝
  • 如何避免正则表达式中的灾难性回溯?

    我正在尝试为字符串测试创建正则表达式 基本上我想要的是something something a gt TRUE abc gt TRUE a b gt TRUE gt FALSE a gt FALSE b gt FALSE 于是这个正则表达
  • Google Play 游戏和个人资料图片

    最近 Google Play 游戏更新了他们的服务 无需 Google 帐户即可运行 而是玩家创建自己的昵称 并选择个人资料图片 我究竟如何加载此个人资料图片以显示它 之前我用过getIconImageUri of Player class
  • 什么是自定义 jvm 属性?

    我是 Java 新手 我遇到过术语 自定义 JVM 属性 以及如何在 Eclipse 中使用自定义 JVM 属性运行配置 我想了解它到底是什么以及它如何帮助我作为一名程序员 jvm 属性 概念是一种在 JVM 范围内创建属性 名称 值对 的
  • 这个 Swift TimeZone 作为另一个时区假设中的日期缩写有​​什么问题?

    在具有以下 Swift 代码的 Xcode Playground 中 我得到了带注释的输出 给定 MST TimeZone 对象和该 MST TimeZone 的 MDT TimeZone 中的日期 我没有收到预期的 MDT TimeZon