2012-10-23 142 views
2

我必须以24小时的格式转换给定的时间,但我没有得到它。不知道我哪里会出错。 如果我有TimeStart为下午1点15分那我应该得到13点15分..如何在iphone中以24小时格式转换时间?

Item *item=[sectionItems objectAtIndex:itemId]; 
NSLog(@"%@",item.TimeStart); 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"HH:mm a"]; 
    NSString *formattedDateString = [dateFormatter stringFromDate:item.TimeStart]; 
    NSLog(@"%@",formattedDateString); 

在上面的代码我有一个项目类和我有NSString * TimeStart; 当我看到formattedDateString它返回null.How我可以修复它?

+0

“Item”的定义是什么?什么是'TimeStart'? – user1118321

+0

你是什么TimeStart日期格式?意味着只是在TimeStart –

回答

6
Item *item=[sectionItems objectAtIndex:itemId]; 
    NSLog(@"%@",item.TimeStart); 

NSString *str = @"1:45.PM";// put here item.TimeStart 

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"hh:mm.a"];// here give the format which you get in TimeStart 

NSDate *date = [dateFormatter dateFromString: str]; 

dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"HH:mm"]; 

NSString *convertedString = [dateFormatter stringFromDate:date]; 
NSLog(@"Converted String : %@",convertedString); 
+0

的日期没有得到它。我有TimeStart作为1:45 PM,那么我应该得到13:45,如果11:45然后11:45,如果下午8:00,那么我应该得到20 :00。我该怎么做?我尝试了一下代码,但仍然返回null。我应该修改什么? – 07405

+1

好的,只需更换这一行[dateFormatter setDateFormat:@“EEE,d MMM yyyy HH:mm:ss z”];与[dateFormatter setDateFormat:@“hh:mm a”]; –

+0

仍然是返回零。实际上我有item.TimeStart是这样的1:45.PM。在45和PM之间有一个点..可能是数据并且它是零。我是否需要分割任何东西? – 07405

1

我只是单纯setDateFormat像[formatter setDateFormat:@"HH:mm"];删除a

和下面caode用于检查其时间甲酸为24小时或12

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setLocale:[NSLocale currentLocale]]; 
[formatter setDateStyle:NSDateFormatterNoStyle]; 
[formatter setTimeStyle:NSDateFormatterShortStyle]; 
NSString *dateString = [formatter stringFromDate:[NSDate date]]; 
NSRange amRange = [dateString rangeOfString:[formatter AMSymbol]]; 
NSRange pmRange = [dateString rangeOfString:[formatter PMSymbol]]; 
BOOL is24h = (amRange.location == NSNotFound && pmRange.location == NSNotFound); 
[formatter release]; 
NSLog(@"%@\n",(is24h ? @"YES" : @"NO")); 
0

使用此控制设置24小时的格式。

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

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

不使用格式化

NSRange range; 
range.location = 2; 
range.length = 2; 
NSString *dateString=[NSString stringWithFormat:@"%@:%@",[myString substringToIndex:2],   [myString substringWithRange:range]]; 

这是我用我的项目中的代码和它的工作对我来说

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 
[dateFormatter setDateFormat:@"HH:mm"]; 
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]]; 

NSLog(@"Current time date:%@", dateString); 

输出:当前时间日期:14:41

+0

我试过不使用formatter.What我需要,如果它是1:45。 PM我应该得到13:45,如果11:45 AM我应该得到11:45 ..如果是晚上8:00,那么应该是20:00。我该怎么做? – 07405

相关问题