Swift DateFormatter设置时区与区域后仍返回次日日期问题排查
排查方向
- 先验证时区转换逻辑:KST是UTC+9时区,示例中的UTC时间
2023-06-29 18:25:13 +0000加上9小时后是2023-06-30 03:25:13 KST,日期确实是30号。要确认你的预期日期是基于UTC还是KST本地时间,是否存在时区转换的认知偏差。 - 检查时区实例是否有效:
TimeZone(abbreviation: "KST")可能返回nil,此时DateFormatter会自动使用设备默认时区。建议改用TimeZone(identifier: "Asia/Seoul")创建时区,这种方式更可靠,避免缩写识别问题。可以打印formatter.timeZone确认是否成功设置为KST。 - 确认原始日期
myDate的实际时区:尽管示例标注的是+0000,仍需在代码中打印myDate.description,确保它确实是UTC时间,没有在之前的处理中被错误转换为其他时区的时间。 - 排查Locale的潜在影响:暂时注释掉
formatter.locale = Locale(identifier: "ko_kr"),观察格式化结果是否变化,确认是否是Locale的日历设置等因素导致异常。 - 检查日期格式字符串:确保
yyyy.MM.dd没有拼写错误,比如注意区分月份MM和分钟mm(当前写法正确,但需确认无笔误)。
内容的提问来源于stack exchange,提问作者hyo
相关产品推荐
相关产品推荐

