0

我有以下一段代码..

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM/dd/YYYY HH:mm"];
NSString *dateString = @"10/27/2012 18:00";
NSDate *parsedDate = [dateFormatter dateFromString:dateString] ;
NSLog(@"Parsed Date.. %@",[parsedDate description]);

我将 NSLog 语句作为Parsed Date.. 2011-12-25 00:00:00 +0000. 我将不胜感激任何帮助解决这个问题。我只想将该 NSString 转换为其 NSDate 等效项。也尝试使用 NSTimeZone,但没有效果。我在这里想念什么?

4

2 回答 2

3

您需要使用小写年份指示,yyyy而不是YYYY

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

如果你想获得正确的时区,你需要设置NSDateFormatter. 默认情况下,它使用您设备的时区。对于格林威治标准时间,请使用以下内容。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
NSString *dateString = @"10/27/2012 18:00";
NSDate *parsedDate = [dateFormatter dateFromString:dateString] ;
NSLog(@"Parsed Date.. %@",[parsedDate description]);
于 2012-10-20T14:45:48.760 回答
0

您使用的格式字符串不正确。请参阅文档。基本上,资本YYYY是“一年中的一周”。尝试使用小写字母yyyy,即

[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
于 2012-10-20T14:52:45.023 回答