NSDateFormatter解析欧洲巴黎时区日期字符串返回nil问题
为什么该日期搭配巴黎时区转换会返回nil?
核心原因是这个时间在巴黎时区根本不存在:
2024年3月31日是欧洲巴黎时区的夏令时切换日,当地时间凌晨2:00会直接向前跳至3:00,也就是说,02:00到03:00之间的所有时间点都是无效的,系统无法将一个不存在的时间转换为有效的NSDate对象,因此dateFromString返回nil。
你的代码本身的格式设置是正确的:
- 已经指定了
en_US_POSIXlocale,避免了区域格式干扰 - 日期格式字符串
yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SS也和输入的2024-03-31T02:40:21.000匹配
要解决这个问题,你可以:
- 检查服务端返回的时间是否合理,避免在夏令时切换的无效时间段内生成时间戳
- 若无法修改服务端,可以考虑先将时间按UTC时区解析,再转换为目标时区的时间(UTC时区没有夏令时问题,所有时间都是有效的)
内容的提问来源于stack exchange,提问作者Nic Hubbard
相关产品推荐
相关产品推荐

