2014-12-06 45 views
0

比方说,我有一个NSString包含15:00 PM。我试图用NSDateFormatter对其进行格式化,以显示如何将任意时间转换为NSDate以使用NSDateFormatter格式化?

3:00 PM

然而,当我试图打印出格式化字符串,它是null

NSString *string = @"15:00 PM"; 
NSDateFormatter *formatter = [ [NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"hh:mm a"]; 
NSDate *time = [formatter dateFromString:string]; 

string = [formatter stringFromDate:time]; 

NSLog(@"%@", string); 

如何分配字符串以正确格式化它?下面的代码

+5

我猜“ 15:00 PM“是无效的,因为15:00是24小时格式,不应该包含任何AM/PM部分 – 2014-12-06 08:53:39

回答

3

使用,

NSString *string = @"15:00"; 
NSDateFormatter *inputDateFormatter = [[NSDateFormatter alloc] init]; 
[inputDateFormatter setDateFormat:@"HH:mm"]; 

NSDate *date = [inputDateFormatter dateFromString:string]; 

NSDateFormatter *outputDateFormatter = [[NSDateFormatter alloc] init]; 
[outputDateFormatter setDateFormat:@"hh:mm a"]; 
NSString *outputString = [outputDateFormatter stringFromDate:date]; 
+0

当我尝试使用NSLog outputString时,这给我一个空输出 – Pangu 2014-12-06 09:02:06

+1

从inputDateFormatter格式中删除”a“ – 2014-12-06 09:15:44

+0

谢谢Rahul,但是我怎样才能在03:00开始时删除0? – Pangu 2014-12-06 09:18:13

1

我与米哈伊尔意见一致,你应该写这样的模式:

[formatter setDateFormat:@"HH:mm a"]; 

格式字符串使用从Unicode技术的格式模式标准#35(reference),有关日期和时间格式在iOS中的更多信息,你可以看看here

+0

非常感谢,我明白了 – Pangu 2014-12-06 09:35:19

0

下面是scre enshot它说在24小时格式不包含AM/PM部分: - enter image description here

使用有效日期格式,然后用下面的代码设置到12小时时间格式: -

NSDate *time = [formatter dateFromString:string]; 
[formatter setDateFormat:@"hh:mm"]; 
相关问题