4

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

4

3 回答 3

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
于 2013-01-24T10:01:10.397 回答
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];

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

于 2016-03-30T16:26:24.487 回答
0

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

let date1            = Date()
let formatter        = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd hh:mm:ss a"
print(formatter.string(from: date1))

let dateTime            = "2013-01-24 18:30 PM"
let dateFormater        = DateFormatter()
dateFormater.dateFormat = "yyyy-MM-dd HH:mm a"
let AptDate             = dateFormater.date(from: dateTime)
dateFormater.dateFormat = "MMM dd,yyyy hh:mm a"
let strDate             = dateFormater.string(from: AptDate!)

print("===> \(AptDate!)")
print("===> \(strDate)")
于 2016-11-18T08:37:33.757 回答