2013-03-06 129 views
-4

我用下面这段代码字符串转换为日期,但时间格式不正确来临,当我登录的日期日期格式问题

NSDateFormatter *formate = [[[NSDateFormatter alloc] init] autorelease]; 
    [formate setDateFormat:@"MM/dd/yyyy HH:mm a"]; 
    [formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
    NSString *strConcat = @"03/06/2013 2:59 PM"; 
    NSDate *date = [formate dateFromString:strConcat]; 
    NSLog(@"Output :%@",date); 

输出2013-03-06 12:59:00 +0000

可以在任何一个请在我把它转换成日期错误的地方。

在此先感谢。

+0

HH代替HH? – Larme 2013-03-06 12:45:43

+2

http://stackoverflow.com/questions/4086492/formatting-date-and-time-with-iphone-sdk – 2013-03-06 12:46:10

回答

1

你的错误是HH DateFormat中,你需要使用hh

// HH给人14:59

// HH给人12:59

NSDateFormatter *formate = [[NSDateFormatter alloc] init]; 
[formate setDateFormat:@"MM/dd/yyyy hh:mm a"]; 
[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; 
NSString *strConcat = @"03/06/2013 2:59 PM"; 
NSDate *date = [formate dateFromString:strConcat]; 
NSLog(@"Output :%@",date); 
+1

这不是一个时区问题。这是由于“HH”(24小时)和“hh”(12小时)格式之间的区别。 – 2013-03-06 13:15:48

+0

@MartinR:2:59 PM将是14:59不是吗?这里hh给14:59,而HH 12:59 – 2013-03-06 13:17:43

+1

如果你使用'hh:mm a'作为日期格式,那么'2:29 PM'被正确解析为'14:59'。 24小时格式加上AM/PM的'HH'组合可能不起作用(反正它没有多大意义)。 - 时区显式设置为GMT,因此它不能成为时区问题 – 2013-03-06 13:23:38