代码之家  ›  专栏  ›  技术社区  ›  mikro098

在Swift中将日期格式化为年份,并可选择纪元

  •  0
  • mikro098  · 技术社区  · 1 年前

    我最近偶然发现了不同日历中年份格式的问题。

    当我想展示距离 Date object我只需将DateFormatter与以下任一对象一起使用 formatter.dateFormat = "y" (假设我想跳过前导零)或 formatter.setLocalizedDateFormatFromTemplate("y") 。它的工作原理与格里高利卡尔的预期一致。

    当我将日历切换到日语或佛教日历时,我遇到的问题浮出水面。

    通过查看iOS上的本地日历应用程序,佛教徒的年份是 2566年 还有日语 Reiwa 5 我们可以看到,根据当前的日历,时代是在一年之前还是之后。

    我想在没有任何黑客攻击的情况下实现类似的东西,比如检查当前的日历并根据此设置格式。

    当我使用 setLocalizedDateFormatFromTemplate 似乎每次我提供“y G”或“G y”时,它都会被转换为 dateFormat = "y G" .此外,仅提供 y 不会调整 dateFormat 并根据日历添加时代。

    我所期待的 日历 我得到什么 "y"/"y G" en_US 区域设置 期望
    Reiwa 5 格里高利语 5 / 5 Reiwa 年复一年,与加州本土不符
    2023 日本人 2023 / 2023 AD 纪元附加在年份上,这对格里高利卡尔来说是罕见的
    2566年 佛教徒 2566 / 2566 BE 只有这个可以通过 y G

    有什么方法可以实现我所描述的内置功能吗?正如我提到的,在处理日期和日历时,在日历之间切换似乎是不正确的,所以我想避免这样做。

    0 回复  |  直到 1 年前