我遇到了问题.我得到了12小时格式的传入时间字符串,我将它们转换为NSDate对象.当iPhone处于12小时格式时,没问题.但是当它采用24小时格式时,事情就出错了.以下是一些示例代码:
NSString *theTime = @"3:19 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"h:mm a"]; // "3:19 PM"
NSDate *date = [formatter dateFromString:theTime];
NSString *theString = [formatter stringFromDate:date];
Run Code Online (Sandbox Code Playgroud)
24小时模式,日期是1970-01-01三点19分00秒,而theString是"3:19" -错误
在12小时模式中,日期是1970-01-01 15:19:00,而弦是"下午3:19" - 右
所以...问题1:为什么设备的24小时设置会覆盖我的日期格式化程序设置?
更重要的是,问题2:如何从12小时到24小时进行正确的转换?
我已经有代码来检测手机是否处于24小时模式,但除了在字符串中挖掘并用15交换3之外,似乎没有干净的方法来执行此操作.
我必须在我的应用程序中显示日期,我需要以格式显示12 - hour format,我已经使用此代码显示date
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:kDateDisplayFormat];
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[dateFormatter setTimeZone:timeZone];
NSString *todaysDate = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:[NSDate date]]];
[[self lblPointsDate] setText:todaysDate];
Run Code Online (Sandbox Code Playgroud)
在这里,当我将我的iPhone日期格式更改为24小时时,它以24小时格式显示.我需要将 24小时转换为12小时格式或仅以12小时格式显示.我怎样才能做到这一点?