【问题标题】:NSDateFormatter returns nil for the 2 AM hourNSDateFormatter 在凌晨 2 点返回 nil
【发布时间】:2013-02-25 23:42:14
【问题描述】:

我正在尝试使用以下代码将字符串转换为 NSDate:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
NSDate *date= [dateFormatter dateFromString:@"2013-03-10T02:00:00"];

除了 02:00:00 之外的所有时间都可以正常工作,如上所示,它返回 nil。

有什么想法吗?

【问题讨论】:

  • 不确定如何解决,但问题可能是由于夏令时
  • 是的,就是这样。将日期更改为 9 日或 11 日,问题就会消失...
  • 在美国,没有 2013 年 3 月 10 日凌晨 2 点这样的时间。由于夏令时,时间从 1:59:59 变为 3:00:00。同样的问题也会出现在其他地区,但在其他日期/时间。
  • 旁注 - 无需将日期格式化程序的时区设置为本地时区。这是默认设置的。
  • @maddy 很棒的评论!你应该给出一个答案。

标签: iphone ios nsdateformatter dst


【解决方案1】:

这是因为 2013 年 3 月 10 日在美国实行的夏令时

系统时间直接从凌晨 1:59 跳到凌晨 3:00..
您损失了 11 月 DST 生效时获得的一个小时

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多