您好我在我的项目中将GMT时间转换为当地时间 - 我在所有模拟器和iPhone / iPod中获得正确的值 - 但是当我在iPad中运行时我得到null, 这是我的代码 -
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"HH:mm:ss";
NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[dateFormatter setTimeZone:gmt];
NSDate *startDate = [dateFormatter dateFromString:@"14:37:00"];
NSLog(@"startDate---%@",startDate);
//This is startDate---2000-01-01 14:37:00 +0000 (in simulator/iPod/iphone)
// startDate---(null) (in ipad)
问题在于用户的ipad时间格式 - 如果是12小时格式 - 那么上面的代码结果为null 我该怎么办这个问题??
答案 0 :(得分:1)
因为你在ipad设备上将时间格式设置为12小时,日期字符串是24小时格式,请查看字符串@" 14:37:00"。
使用
dateFormatter.dateFormat = @"hh:mm:ss";
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
如果您想强制它进入12小时模式,无论用户的24/12小时模式设置如何,您都应该将语言环境设置为en_US_POSIX。
使用hh而不是HH。
hh通常是12小时,而HH通常是24小时。一个很好的官方参考资料as linked by Apple themselves是here。另一个好桌子是here,如Zaph所述。