这个问题被问了很多,但我找不到我的问题的解决方案。
我想要什么:将作为 NSString 给出的日期转换为具有完全不同格式的 NSDate。我想转换Tue, 31 Jul 2012 10:15:00 GMT
为2012-07-31 10:15:00 +0000
.
我的代码:
NSString *startDateString = @"Tue, 31 Jul 2012 10:15:00 GMT"; //in real from a server
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss"];
NSDate *startDate = [formatter dateFromString:startDateString];
[formatter setDateFormat:@"yyy-MM-dd HH:mm:ss'Z'"];
NSString *endDateString = [formatter stringFromDate:startDate];
NSDate *endDate = [formatter dateFromString:endDateString];
问题:
endDate
是nil
。
编辑:
发现一个奇怪的行为。
当我将第一个 dateFormat 更改为@"EEE, dd MMM yyy HH:mm:ss 'GMT'"
(添加 GMT)时,endDate 的输出是正确的,但仅在模拟器中。在设备上它仍然为零。
使用不带“GMT”的 dateFormat 时,模拟器和设备上的值为零。