0

我使用以下日期格式。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];

在 iOS 6 中,我得到的年份是 2013,但对于 iOS 7,它给出 0013。有什么解决方案或者我做错了什么?

4

3 回答 3

1

我想通了。错误在于日期对象本身。最初保存时,我将日期格式设置为 'MM/dd/yy hh:mm:ss' 并将其转换为 NSDate 并保存。检索时,我得到了 NSDate,但是当我打印它时,它会将年份打印为 0013,在这种情况下,它无法正确识别它看起来的前缀。理想情况下,这应该是正确的,因为没有所有 4 位数字就没有必要保存年份,因为每个世纪都会出现 13 位。

于 2013-11-06T17:54:01.477 回答
0

也许,你应该

dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
于 2014-02-10T11:47:57.707 回答
0

看起来您的日期字符串可能不是您所期望的。如果日期格式化程序需要一个四位数的年份,那么这就是你需要给它的。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];

NSDate *date = [NSDate date];
NSLog(@"stringFromDate: %@", [dateFormatter stringFromDate:date]);

NSString *dateString = @"11/06/13 10:36:11";
date = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString: %@", date); // year = 0013

dateString = @"11/06/2013 10:36:11";
date = [dateFormatter dateFromString:dateString];
NSLog(@"dateFromString: %@", date); // year = 2013
于 2013-11-06T17:40:39.970 回答