0

我有一个字符串,它表示存储在军事时间的日期。我想在 12 小时内将这个字符串显示在标签中。这是我的代码片段:

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:timeZone];  
[dateFormat setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
NSLog(@"Current Date: %@", [dateFormat stringFromDate:[NSDate date]]);
NSLog(@"Sent date: %@",[myPlanData valueForKey:@"planDate"]);
NSDate *aDate =[dateFormat dateFromString:[myPlanData valueForKey:@"planDate"]];
NSLog(@"Converted date is: %@",aDate);
NSString *planDateString = [dateFormat stringFromDate:aDate];
NSLog(@"The converted date string is: %@",planDateString);
planDateLabel.text=planDateString;

输出是:

当前日期:2012 年 6 月 28 日 10:08:48 -(所以我的日期格式化程序看起来正确?)

发送日期:06/30/2012 20:47:34 -(这是发送的值)

转换后的日期是:(null)-(这里是中断的地方!)

转换后的日期字符串为:(null)


如果我将日期格式更改为

[dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss"];

一切都很顺利,但我最终会显示军用时间。我只是想将其转换为 12 小时时间并显示在标签中

4

1 回答 1

1

好吧,这就是我最终修复它的方式

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:timeZone];  
[dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss"];

NSDateFormatter *dateFormatback = [[NSDateFormatter alloc] init];
[dateFormatback setTimeZone:timeZone];
[dateFormatback setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];

NSLog(@"Current Date: %@", [dateFormat stringFromDate:[NSDate date]]);
NSLog(@"Sent date: %@",[myPlanData valueForKey:@"planDate"]);
NSDate *aDate =[dateFormat dateFromString:[myPlanData valueForKey:@"planDate"]];
NSLog(@"Converted date is: %@",aDate);
NSString *planDateString = [dateFormatback stringFromDate:aDate];
NSLog(@"The converted date string is: %@",planDateString);

planDateLabel.text=planDateString;

不确定这是否是最好或正确的方法,但它有效!

于 2012-06-29T01:33:57.127 回答