1

我正在使用NSDateComponents以下字符串建立日期:

"2014-05-17 02:39:00 PM +0000"

当我设置所有组件并返回我得到的 NSDate 时(参见下面的方法):

"2014-05-17 02:39:00 AM +0000"

我的问题是,有没有办法将 AM/PM 指定为NSDateComponent,或者如果源日期是 PM,我是否只需将 12 添加到我的小时?

- (NSDate *)dateFromYear:(int)year month:(int)month day:(int)day hour:(int)hour minute:(int)minute {
    NSDateComponents *components = [[NSDateComponents alloc] init];
    [components setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    [components setYear:year];
    [components setMonth:month];
    [components setDay:day];
    [components setHour:hour];
    [components setMinute:minute];
    NSCalendar *calendar = [NSCalendar currentCalendar];
    return [calendar dateFromComponents:components];
}
4

1 回答 1

1

显然,NSDateComponents似乎没有指定这一点。苹果自己的文档是这样说的:

重要提示:一个 NSDateComponents 对象本身是没有意义的;您需要知道它是根据什么日历解释的,并且您需要知道这些值是单位的绝对值还是单位的数量。

除了您的 12 小时逻辑之外,您还可以交替使用使用 AM/PM 的 NSDate 类dateWithNaturalLanguageString并以某种方式将其用于您的目的。

于 2012-11-01T15:03:39.497 回答