【问题标题】:Convert date time to NSDate from NSString将日期时间从 NSString 转换为 NSDate
【发布时间】:2012-11-14 11:18:07
【问题描述】:

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

感谢期待。

【问题讨论】:

  • 另请参阅:WWDC 2011 会议视频,“会议 117 - 执行日历计算”

标签: objective-c ios nsdate xcode4.5 nstimezone


【解决方案1】:

您的转换输出是格林威治标准时间

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];

【讨论】:

    【解决方案2】:

    这是需要进行的更改。

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

    谢谢

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-05-18
        • 1970-01-01
        • 2011-04-18
        • 2014-06-26
        • 2016-09-01
        • 2011-11-25
        • 2011-04-24
        • 2017-04-23
        相关资源
        最近更新 更多