在使用时间NSDate时,如果手机设置的不是公元纪年(如泰国用的是佛教历,日本用的是日本日历)这时候得到的时间会有很大的区别,而服务器一般情况下都是用的公无纪年。
例如
NSDate* date = [NSDate date];(佛历)
如查是佛教历的话获取到的时间可能是25XX年,和公元经年相差好几百这样进行时间比较的话
就有问题了。
处理方式是使用时首先转化成公元纪年代码如下:
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
//设置为公元纪年,不然的话,在国外如泰国用的是佛教历,日本用的是日本日历
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
formatterOne.calendar = gregorian;
//如果手机是12小时制时间(hh),而转换时间和格式为24小时制(HH),那么得到的时间为nil 所以要判断当前手机时间格式再转换
NSString *formatStringForHours = [NSDateFormatter dateFormatFromTemplate:@"j" options:0 locale:[NSLocale currentLocale]];
NSRange containsA = [formatStringForHours rangeOfString:@"a"];
//hasAMPM==TURE为12小时制,否则为24小时制
BOOL hasAMPM = containsA.location != NSNotFound;
if (hasAMPM) {
[formatter setDateFormat:@"yyyyMMddhhmmss"];
} else {
[formatter setDateFormat:@"yyyyMMddHHmmss"];
}