目标C - 如何从NSDate获得工作日?

时间:2010-08-19 17:15:00

标签: objective-c nsdate weekday

我需要能够从nsdate获得工作日,我有以下代码,它总是返回1.我试图改变月份,我尝试了从1到12的所有内容,但是工作日的结果总是1

NSDate *date2 = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d", 2010, 6, 1]];
unsigned units2 = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit | NSWeekdayCalendarUnit;
NSCalendar *calendar2 = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components2 = [calendar2 components:units2 fromDate:date2];
int startWeekDay = [components2 weekday];
[date2 release];
[calendar2 release];

6 个答案:

答案 0 :(得分:44)

创建仅包含工作日的NSDateFormatter将完成您想要的工作。

NSDate *now = [NSDate date];
NSDateFormatter *weekday = [[[NSDateFormatter alloc] init] autorelease];
[weekday setDateFormat: @"EEEE"];
NSLog(@"The day of the week is: %@", [weekday stringFromDate:now]);

如果您需要国际化,NSDateFormatter可以发送一个区域设置,这将提供正确的翻译。

日期格式化程序通过此标准进行控制:Unicode Date Formats

答案 1 :(得分:6)

为Mac编辑:

字符串的格式必须是 -YYYY-MM-DD HH:MM:SS±HHMM 根据文档,所有字段必须

旧答案(适用于iPhone并在模拟器上测试):

-initWithString:中没有(公开)NSDate方法,而您返回的内容是而不是您期望的内容。

使用正确配置的(您需要提供输入格式)NSDateFormatter-dateFromString:

答案 2 :(得分:0)

我解决了问题,问题是我的日期字符串的格式错误了:

NSDate *date = [[NSDate alloc] initWithString:[NSString stringWithFormat:@"%d-%d-%d 10:45:32 +0600", selectedYear, selectedMonth, selectedDay]];

因为我不关心我随机将时间传递到字符串

的时间

答案 3 :(得分:0)

有人来这里寻找更新的Swift 4解决方案:

extension Date {

    func getDayOfWeek() -> String {
        let dateFormatter = DateFormatter()
        dateFormatter.timeZone = TimeZone.current
        dateFormatter.locale = Locale(identifier: "en_US")
        dateFormatter.setLocalizedDateFormatFromTemplate("EEEE")

        return dateFormatter.string(from: self)
    }
}

let inputString = "2018-04-16T15:47:39.000Z"

let result = inputString.getDayOfWeek()

result = Monday

答案 4 :(得分:0)

Swift 3中最令人讨厌的答案。

let formatter = DateFormatter()
formatter.dateFormat = "EEEE"
print("The day of the week is \(formatter.string(from: Date()))")

答案 5 :(得分:0)

我使用了以下网站来帮助设置字符串以检索我想要的日期格式

Coder Wall - Guide to objective c date formatting