Objective C 中字符串中的日期与工作日

Date from String in Objective C with weekday

我正在尝试将字符串转换为日期,我的字符串是 2020 年 11 月 24 日星期日@5:00 下午 并且日期格式为 EEEE,MMMM dd,YYYY @ hh:mm a

我正在为相同的代码编写下面的代码,但是使用这种格式和日期的日期返回 nil。当我从格式中删除 Day 和 EEEE 时,它工作正常。

NSDateFormatter * dateFormatter = [NSDateFormatter new];
NSLocale * locale = [[NSLocale alloc] initWithLocaleIdentifier:@"de_LU"];
[dateFormatter setDateFormat:@"EEEE, MMMM dd, YYYY @ hh:mm a"];
[dateFormatter setLocale:locale];
NSDate *date = [dateFormatter dateFromString:[NSString stringWithFormat:@"%@", @"Sunday, November 24, 2020 @ 5:00 PM"]];
//This line returning nil and assigning into date object
NSString * dateString = [dateFormatter stringFromDate:date];
NSLog(@"%@", dateString);

谁能帮我解决这个问题?

提前致谢。

首先,年份说明符是错误的,它必须是 yyyy 但这与问题无关。顺便说一句,2020 年 11 月 24 日是 星期二 (也无关紧要)。

在德语中(甚至在卢森堡德语中也没有)没有 SundayTuesday,对于输入字符串,您必须将语言环境设置为英语的某些内容,例如通用 en_US_POSIX

NSDateFormatter * dateFormatter = [NSDateFormatter new];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatter.dateFormat = @"EEEE, MMMM dd, yyyy @ hh:mm a";
NSDate *date = [dateFormatter dateFromString:[NSString stringWithFormat:@"%@", @"Tuesday, November 24, 2020 @ 5:00 PM"]];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"de_LU"];
NSString * dateString = [dateFormatter stringFromDate:date];
NSLog(@"%@", dateString);