NSDateFormatter中的AM/PM问题

Div*_*ain 4 iphone nsdateformatter ipad ios

我写下面的代码将一种日期格式转换为另一种日期格式.但AM字符串工作,PM不起作用.请帮忙-

dateTime=@"2013-01-24 18:30 PM";
//dateTime=@"2013-01-24 06:30 AM";
NSDateFormatter *dtFormatter=[[NSDateFormatter alloc]init];
[dtFormatter setDateFormat:@"yyyy-MM-dd hh:mm a"];
NSDate *AptDate=[dtFormatter dateFromString:dateTime];
[dtFormatter setDateFormat:@"MMM dd,yyyy hh:mm a"];
NSString *strDate=[dtFormatter stringFromDate:AptDate];
Run Code Online (Sandbox Code Playgroud)

如果我使用PM格式,我在这里得到AptDate变量为null

Ano*_*dya 12

您需要使用HH代替hh,因为您的时间是24小时格式:

[dtFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];
Run Code Online (Sandbox Code Playgroud)

您的完整代码将如下:

*dateTime=@"2013-01-24 18:30 PM";
//dateTime=@"2013-01-24 06:30 AM";
NSDateFormatter *dtFormatter=[[NSDateFormatter alloc]init];
[dtFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];
NSDate *AptDate=[dtFormatter dateFromString:dateTime];
[dtFormatter setDateFormat:@"MMM dd,yyyy hh:mm a"];
NSString *strDate=[dtFormatter stringFromDate:AptDate];

NSLog(@"===> %@",AptDate);
NSLog(@"===> %@",strDate);
Run Code Online (Sandbox Code Playgroud)

输出:

===> 2013-01-24 07:00:00 +0000
===> Jan 24,2013 12:30 PM
Run Code Online (Sandbox Code Playgroud)

  • 很好,无论如何,如果是24小时格式你不需要使用AM/PM.你的12小时你可以使用`NSLocale*twelveHourLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; dtFormatter.locale = twelveHourLocale;` (2认同)