【问题标题】:NSCalendar and NSDate incompatibiltyNSCalendar 和 NSDate 不兼容
【发布时间】:2011-10-18 13:23:00
【问题描述】:

我正在尝试仅从 NSDate 访问小时和分钟信息。

所以我使用 NSCalendar 来做到这一点。以下是我的代码:

     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"hh:mm"];
    NSDate *date = [NSDate date];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSDateComponents *components = [calendar components:(kCFCalendarUnitHour | kCFCalendarUnitMinute) fromDate:date];
    NSInteger hour = [components hour];
    NSInteger minute = [components minute];
    NSLog(@"%@",date description);
    NSLog(@"Hour : %d MInutes: %d",hour,minute);

它没有给我正确的信息。以下是日志:

2011-10-18 18:46:12.194 日期测试[1182:707] 2011-10-18 13:16:12 +0000 2011-10-18 18:46:12.198 DateTest[1182:707] 时间:18 分钟:46

另一个疑问是当时间是 18:46:12.194 时,它被记录为 13:16:12。为什么会有这种差异?

【问题讨论】:

    标签: nsdate nscalendar nsdatecomponents


    【解决方案1】:

    因为您生活在比格林威治标准时间早 5.5 小时的时区,而 NSDate 的 -description 方法总是返回以 GM 时区格式设置的字符串。

    【讨论】:

    • 戴夫,谢谢。时区是个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多