gpt4 book ai didi

ios - NSDateFormatter 时区缩写

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:46 25 4
gpt4 key购买 nike

我需要识别像 Tue Aug 13 17:29:20 MSK 2013 这样的日期字符串。而且,据我所知,要做到这一点,我需要在 NSDateFormmater 中使用“V”符号,但它只能识别时区之类的 GMT+04:00。还有其他方法可以解析时区缩写吗?

代码如下:

  NSDateFormatter *dft = [[NSDateFormatter alloc] init];
[dft setDateFormat:@"EEE MMM dd HH:mm:ss V yyyy"];
NSLog(@"%@", [dft stringFromDate:[NSDate date]]);
NSLog(@"%@", [dft dateFromString:@"Tue Aug 13 17:29:20 MSK 2013"]);

输出:

Tue Aug 13 17:37:41 GMT+04:00 2013
(null)

使用 NSLog(@"%@", [dft dateFromString:@"Tue Aug 13 17:29:20 GMT+04.00 2013"]) 输出正常。

最佳答案

根据 http://www.openradar.me/9944011 , Apple 在 Lion/iOS 5 时代的某个时候更新了 NSDateFormatter 依赖的 ICU 库。并且它不再处理大多数 3 字母时区,特别是“MSK”(莫斯科时间),因为它们不明确,只有在为语言环境设置“cu”标志时才使用它们。

这意味着您可以处理它。例如:

 NSString *threeLetterZone = [[dateString componentsSeparatedByString:@" "] objectAtIndex:4];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:threeLetterZone];
if (timeZone)
{
NSString *gmtTime = [dateString stringByReplacingOccurrencesOfString:threeLetterZone withString:@"GMT"];
date = [[pivotalDateFormatter dateFromString:gmtTime] dateByAddingTimeInterval:-timeZone.secondsFromGMT];
}

基于 this code

关于ios - NSDateFormatter 时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18210707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com