IOS中的日期时间转换

时间:2014-03-18 07:17:51

标签: ios iphone nsstring nsdateformatter

我知道这将是一个愚蠢的问题,但我尝试了一切,但仍然无法实现我想做的事。

这是我的问题:

我想检查两个时间值和一个日期,我有这样的时间字符串" 05.30 AM"。 我想将它转换为时间格式[如果我可以完全按照它现在的方式转换,那就更好了]。 我知道有一种方法可以比较两个时间值:

NSComparisonResult result = [date1 compare:date2];

我已经按照下面的代码将我的字符串值转换为时间格式,但它只返回null。

请指导我解决这个问题:

NSString* tim = @"11:12 AM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterShortStyle];

NSDate *formatedTime= [formatter dateFromString:tim];
NSLog(@"TIME : %@",formatedTime);

4 个答案:

答案 0 :(得分:1)

对于这种特殊情况(tim按照您的方式格式化),您只缺少一行:[formatter setDateStyle:NSDateFormatterNoStyle];这会告诉formatter不要在date中查找NSString* tim = @"11:12 AM"; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setTimeStyle:NSDateFormatterShortStyle]; [formatter setDateStyle:NSDateFormatterNoStyle]; NSDate *formatedTime= [formatter dateFromString:tim]; NSLog(@"TIME : %@",formatedTime); 你的字符串。

{{1}}

答案 1 :(得分:0)

您需要设置格式。

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

答案 2 :(得分:0)

NSString* tim = @"11:12 AM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm a"];

NSDate *formatedTime= [formatter dateFromString:tim];
NSLog(@"TIME : %@",formatedTime);

但你会收到

  

时间:1999-12-31 23:12:00 +0000

因为年份未知。

答案 3 :(得分:0)

首先,你需要像这样格式化你的字符串

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"EEE, dd MMM yyyy HH:mm:ss ZZZ";
[formatter dateFromString:@"Fri, 25 Jan 2014 5:30:22 +0000"];