1

我正在尝试将 an 转换NSStringNSDatetime 。这就是我现在正在做的事情:

 NSString *myDateIs= @"2012-07-14 11:30:40 AM ";
 NSDateFormatter* startTimeFormat = [[NSDateFormatter alloc] init];
 [startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss a "];
 NSDate*newStartTime = [startTimeFormat dateFromString:myDateIs];

输出是2012-07-14 06:00:40 +0000。日期正确,但时间不正确。我怎样才能得到正确的时间?谢谢。

4

4 回答 4

2

你得到的时间是格林威治标准时间,把它转换成当地时间。

NSDateFormatter* local = [[[NSDateFormatter alloc] init] autorelease];        
[local setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
[local setDateFormat:@"YYYY-MM-dd hh:mm:ss a"];

NSString* localSTR = [local stringFromDate: newStartTime];
于 2012-07-16T08:01:49.277 回答
1

时区。NSDate 将以 GMT 格式存储时间。但是,您的本地时区可能完全不同。

于 2012-07-16T08:01:28.100 回答
1

您需要设置时区。

NSString *myDateIs= @"2012-07-14 11:30:40 AM ";
NSDateFormatter* startTimeFormat = [[NSDateFormatter alloc] init];
startTimeFormat.timeZone=[NSTimeZone timeZoneWithName:@"UTC"];
[startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss a"];
NSDate*newStartTime = [startTimeFormat dateFromString:myDateIs];
NSLog(@"%@", newStartTime);

输出:

 2012-07-14 11:30:40 +0000
于 2012-07-16T08:06:17.187 回答
1

这个对你有用:

[startTimeFormat setDateFormat:@"YYYY-MM-dd hh:mm:ss aa"];
[startTimeFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];

您错过了 dateFormat 的 a 并且必须设置 timeZone。

于 2012-07-16T08:08:22.470 回答