繁体   English   中英

将日期时间从NSString转换为NSDate

[英]Convert date time to NSDate from NSString

时区总是给我带来麻烦。 这次我必须将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即我在字符串中具有的相同日期时间。

谢谢您的期待。

转换的输出给了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];

这是需要采取的变更。

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

谢谢

转换看起来正确,但是默认输出为UTC时间( +0000 )并带有24小时制,这就是为什么您无法获得AM / PM区别的原因(“ 01:00 PM”为13:00)。 如果需要特定的表示形式,还需要格式化输出[formatter stringFromDate:aDate] )…

对于UTC问题,您需要通过选择该时区来代替[NSTimeZone systemTimeZone]来选择该时区。 尝试使用[NSTimeZone localTimeZone]作为初学者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM