gpt4 book ai didi

ios - NSDateFormatter为什么不解析此日期?

转载 作者:行者123 更新时间:2023-12-01 16:50:53 39 4
gpt4 key购买 nike

我很难让NSDateFormatter识别出我要传递的这个日期。我很确定它与工作日有关,但我无法弄清楚。

NSString *testDate = @"20130412 Friday";
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
df.dateFormat = @"yyyyMMdd cccc";
NSDate *result = [df dateFromString:testDate];
NSLog(@"test: %@, result: %@", testDate, result);

这样得出的日期是1999-12-30。我在工作日尝试过eeee和EEEE,但这没有帮助。删除工作日似乎可以解决问题,但不能解释我的日期格式有什么问题。

最佳答案

我不明白为什么会有工作日。这可能会导致日期不一致。您对“20130412 Tuesday”有什么期待? (供将来的读者注意:20130412实际上是星期五),我检查了http://userguide.icu-project.org/formatparse/datetime,发现没有禁止添加星期几的功能,但这对我来说似乎是个坏主意。

但是,NSDateFormatter似乎表现不正确。我在iOS 6.1模拟器和OS X 10.8.3上进行了测试,在两个平台上都得到了相同的结果。我什至扩大了一点

id longResult;
NSError *error;
NSRange range = NSMakeRange(0, testDate.length);
if (![df getObjectValue:&longResult forString:testDate range:&range error:&error]) {
NSLog(@"error: %@ reason:%@", error.localizedDescription, error.localizedFailureReason );
}

NSLog(@"result: %@", longResult);
NSLog(@"%@", NSStringFromRange(range));

下面的代码并产生
2013-04-10 16:45:27.921 date formatter fun ios[47350:c07] test: 20130412 Friday, result: 1999-12-31 07:00:00 +0000
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] result: 1999-12-31 07:00:00 +0000
2013-04-10 16:45:27.922 date formatter fun ios[47350:c07] {0, 15}

它试图解析,返回YES(成功的解析),但是将错误的答案放入结果中。

关于ios - NSDateFormatter为什么不解析此日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15938039/

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