我最近偶然发现了不同日历中年份格式的问题。
当我想展示距离
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
|
有什么方法可以实现我所描述的内置功能吗?正如我提到的,在处理日期和日历时,在日历之间切换似乎是不正确的,所以我想避免这样做。