0

时区总是给我带来麻烦。这次我必须将我在 NSSTring 中的 date-time 转换为 NSDate。

我正在做这样的事情。

NSString *myStringDate=@"14-11-2012 4:09:00 PM +0500"

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a Z"];

NSDate *aDate = [formatter dateFromString:myStringDate];
NSLog(@"%@",aDate);

但我有这样的输出

14-11-2012 11:09:00 +0000

此外,没有设置 AM/PM :-(

我想要的是14-11-2012 4:09:00 PM +0500与字符串中相同的日期时间。

感谢期待。

4

3 回答 3

1

转换的输出是 GMT 时间

NSString *myStringDate=@"14-11-2012 4:09:00 PM +0500"

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setTimeZone:[NSTimeZone systemTimeZone]];
[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a Z"];

NSDate *aDate = [formatter dateFromString:myStringDate];



 NSDateFormatter* df_utc = [[[NSDateFormatter alloc] init] autorelease];
 [df_utc setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
 [df_utc setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

 NSDateFormatter* df_local = [[[NSDateFormatter alloc] init] autorelease];
 [df_local setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];
 [df_local setDateFormat:@"yyyy.MM.dd G 'at' HH:mm:ss zzz"];

 NSString* ts_utc_string = [df_utc stringFromDate:aDate];
 NSString* ts_local_string = [df_local stringFromDate:aDate];
于 2012-11-14T11:36:32.483 回答
0

Here Is the Change need to be taken.

[formatter setDateFormat:@"dd-MM-yyyy h:mm:ss a "];

Thanks

于 2012-11-14T11:28:21.497 回答
0

转换看起来是正确的,但默认输出是 UTC 时间 ( +0000) 和 24 小时制时钟,这就是为什么您没有区分 AM/PM 的原因(“01:00 PM”将是 13:00)。如果你想要一个特定的表示,你还需要格式化输出[formatter stringFromDate:aDate]( )...</p>

对于 UTC 问题,您需要选择您选择的时区,方法是使用该选项代替[NSTimeZone systemTimeZone]. 尝试[NSTimeZone localTimeZone]入门。

于 2012-11-14T11:38:50.407 回答