gpt4 book ai didi

ios - NSDateFormatter 以看似正确的格式字符串返回 Nil

转载 作者:行者123 更新时间:2023-11-28 21:33:29 25 4
gpt4 key购买 nike

我正在使用 NSDateFormatter 从服务器时间字符串生成 NSDate 对象。我们使用的是 ISO-8601 Extended,下面是我拥有的一种方法,它返回处理转换的日期格式化程序:

+ (NSDateFormatter *) dateFormatter {
NSDateFormatter * dateFormatter = [NSDateFormatter new];
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss.SSSZ";
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier: @"en_US_POSIX"];
return dateFormatter;
}

但是,当我使用该代码时,下面的断言失败了:

NSDateFormatter * dateFormatter = [MyClass dateFormatter]; 
// "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
_testDateObject = [dateFormatter dateFromString: @"2016-01-18'T'16:31:16.401Z"];
NSParameterAssert(_testDateObject);

我使用的日期格式字符串有什么问题?我尝试了它的变体(例如转义文字),但没有一个产生有效的 NSDate

编辑我原来的帖子包含我使用的不正确的格式字符串。正如 rmaddy 所指出的,我应该使用 yyyy-MM-dd'T'HH:mm:ss.SSSZ,我就是这样。

最佳答案

您的问题是您的输入字符串 "2016-01-18'T'16:31:16.401Z" 与您的格式不匹配。

在格式字符串中,' 字符开始和结束转义字符序列。格式子串 'T' 匹配输入子串 T 输入子串 'T'。由于格式字符串中没有任何内容与输入中的单引号匹配,因此转换失败。

如果您真的希望您的输入包含单引号,您必须在您的格式中使用双单引号来匹配它们,并且使用单引号来转义T:

let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'''T'''HH:mm:ss.SSSZ"
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")

let date = formatter.dateFromString("2016-01-18'T'16:31:16.401Z")

// Result:
"Jan 18, 2016, 10:31 AM"

关于ios - NSDateFormatter 以看似正确的格式字符串返回 Nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34862100/

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