【问题标题】:Possible bug in NSDateCompononents?NSDateCompononents 中可能存在的错误?
【发布时间】:2013-10-11 15:22:35
【问题描述】:

我只是在玩计时器,我发现了这个:

 - (void)viewDidLoad{
     [super viewDidLoad];
     NSDate *date = [NSDate date];
     dFormatter = [[NSDateFormatter alloc] init]; //instance variable

     NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

     unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
     NSDateComponents *dateC = [calendar components:unitFlags fromDate:date];
     [dateC setSecond:1];
     [dateC setHour:0];
     [dateC setMinute:0];

     NSDate *fireDate = [calendar dateFromComponents:dateC];
     [dFormatter setTimeStyle:NSDateFormatterLongStyle];
     [dFormatter setDateStyle:NSDateFormatterMediumStyle];
     NSLog(@"%@", [dFormatter stringFromDate:fireDate]);
 }

输出惊人:Oct, 4 12:00:01 AM

我正在尝试设置一个从过去几个小时开始的计时器触发日期。

我应该报告这个,或者有没有办法让那个日期变成像 oct, 4 00:00:01 AM???

【问题讨论】:

    标签: iphone ios cocoa nsdate nsdatecomponents


    【解决方案1】:

    12:00:01 AM 等于午夜后 1 秒。还是我在这里遗漏了什么?

    【讨论】:

    • 我很讨厌这个。我尝试了很多不同的选择来改变它。但最终是正确的输出。
    • 当然,我来自一个使用 24 小时制的国家,有时也会遇到这个问题 :)
    • 我笑得停不下来……太搞笑了!
    • 如果你想在语言上正确,12pm 是不存在的。 12点也不行。上午 11:59:59 和下午 12:00:01 之间的第二个是“经络”,另一个 12:00:00 是“午夜”。但是,按照美国的惯例,中午称为中午 12:00,午夜称为上午 12:00。
    • (“子午线”指的是太阳直接在头顶——处于当天的最高海拔。)
    猜你喜欢
    • 2019-04-18
    • 2019-12-22
    • 2012-01-21
    • 2018-12-31
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多