NSDateFormatter中的AM / PM问题

时间:2013-01-24 09:56:59

标签: ios iphone ipad nsdateformatter

我在下面编写代码,将一种日期格式转换为另一种日期格式。 但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];

如果我使用PM格式

,我在这里得到AptDate变量为null

3 个答案:

答案 0 :(得分:12)

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

[dtFormatter setDateFormat:@"yyyy-MM-dd HH:mm a"];

您的完整代码将显示为:

*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);

输出:

===> 2013-01-24 07:00:00 +0000
===> Jan 24,2013 12:30 PM

答案 1 :(得分:0)

UILabel *dateLabel = (UILabel *)[cell viewWithTag:400];
NSString *oldDate = [exercise objectForKey:@"date"];
//make formatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //24 hour format
NSDate *tempDate=[formatter dateFromString:oldDate];
NSLog(@"temp date %@", tempDate);
[formatter setDateFormat:@"hh:mm a"];
NSString *newDate=[formatter stringFromDate:tempDate];
NSLog(@"new date %@", newDate);
//make label text
[dateLabel setText:newDate];

对于任何从mySQL看DATETIME标记到常规hh:mm的人来说,正确显示AM / PM的格式对我有用。

答案 2 :(得分:0)

对于那些正在寻找 Swift 3 版本的接受答案的人。

Task.Factory.StartNew