[英]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.