我使用以下日期格式。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
在 iOS 6 中,我得到的年份是 2013,但对于 iOS 7,它给出 0013。有什么解决方案或者我做错了什么?
我使用以下日期格式。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
在 iOS 6 中,我得到的年份是 2013,但对于 iOS 7,它给出 0013。有什么解决方案或者我做错了什么?
我想通了。错误在于日期对象本身。最初保存时,我将日期格式设置为 'MM/dd/yy hh:mm:ss' 并将其转换为 NSDate 并保存。检索时,我得到了 NSDate,但是当我打印它时,它会将年份打印为 0013,在这种情况下,它无法正确识别它看起来的前缀。理想情况下,这应该是正确的,因为没有所有 4 位数字就没有必要保存年份,因为每个世纪都会出现 13 位。
也许,你应该
dateFormatter.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
和
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
看起来您的日期字符串可能不是您所期望的。如果日期格式化程序需要一个四位数的年份,那么这就是你需要给它的。
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