ios - 函数 `DateFormatter.dateFormat(fromTemplate:)` 是如何工作的?
问题描述
通过一些挖掘和 SO 线程的帮助,我能够弄清楚,如果您使用如下代码设置 DateFormatter:
let locale = NSLocale.current
let format : String = DateFormatter.dateFormat(fromTemplate: "j:mm.ss.SSS", options:0, locale:locale)!
print("format = \(format)")
let formatter = DateFormatter()
formatter.dateFormat = format
您将获得一个日期格式化程序,其日期字符串适应用户的 12/24 小时时钟设置。
如果您在美国运行该代码并将设备设置为 12 小时时间,您会在控制台上看到以下内容:
format = h:mm:ss.SSS a
如果您将设备设置为 24 小时制,您会看到
format = HH:mm:ss.SSS
那讲得通。
但是,一旦将生成的格式字符串分配给日期格式化程序,它应该是固定的。我希望日期格式化程序生成 12 或 24 小时的时间,直到我明确更改它的格式字符串。
事实并非如此。如果我切换到设置并将时钟设置从 12 小时更改为 24 小时,日期格式化程序就会神奇地开始生成 24 小时时间字符串。我可以记录日期格式化程序的格式字符串,它仍然显示 12 小时字符串“h:mm:ss.SSS a”。这是怎么回事?
解决方案
推荐阅读
- reactjs - 如何在下面的代码中添加扩展 React 组件部分?
- python - 为什么在 python 2.7 中出现 else 语句的语法错误?
- javascript - 设置匿名函数 TypeScript 的类型
- python - SQL - 从对应值与另一个选择语句的结果匹配的表中选择值
- java - 每个线程在 Java 中完成运行后如何运行任务?
- android - RecyclerView 中的 ViewBinding 以及 DiffUtils 回调不起作用
- python - 使用 M1 Mac 进行 Python 多处理
- java - 在Java SpringBoot中将枚举多个值转换为Json
- amazon-web-services - 未找到 Amazon EC2 实例用户数据
- aix - 可能的 DB.TOXML 错误?(AIX 上的 UniVerse 11.3.1)