如何使用NSDate从今天的日期找到工作日?

时间:2010-03-17 21:23:43

标签: objective-c nsdate

我知道我可以通过[NSDate date];找出今天的日期,但是我怎么能在星期六,星期五等今天的某一天找到它。

我知道%w可以使用NSDateFormatter,但我不知道使用它。

5 个答案:

答案 0 :(得分:75)

NSCalendar* cal = [NSCalendar currentCalendar];
NSDateComponents* comp = [cal components:NSCalendarUnitWeekday fromDate:[NSDate date]];
return [comp weekday]; // 1 = Sunday, 2 = Monday, etc.

如果您只需要没有其他组件的工作日(需要iOS 8 + ),请参阅@HuguesBR的答案。

NSInteger weekday = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday 
                                                   fromDate:[NSDate date]];

(如果您没有得到正确的答案,请检查您是否错误键入NSCalendarUnitWeekday与其他与周相关的组件,例如NSCalendarUnitWeekdayOrdinal等。


斯威夫特3:

let weekday = Calendar.current.component(.weekday, from: Date())
// 1 = Sunday, 2 = Monday, etc.

答案 1 :(得分:3)

如果有人对Swift解决方案感兴趣,请使用:

import Foundation

let weekday = NSCalendar.current.component(.weekday, from: Date())
print(weekday) // => prints the weekday number 1-7 (Sunday through Saturday) 

请参阅demo

更新:修复为在Swift 3中工作

答案 2 :(得分:1)

这是适用于iOS 8的更新版本

NSCalendar* currentCalendar = [NSCalendar currentCalendar];
NSDateComponents* dateComponents = [currentCalendar components:NSWeekdayCalendarUnit fromDate:[NSDate date]];
return [dateComponents weekday];

答案 3 :(得分:1)

更短的版本

NSCalendarUnit dayOfTheWeek = [[NSCalendar currentCalendar] component:NSCalendarUnitWeekday fromDate:yourDate];

答案 4 :(得分:0)

jdk.http.ntlm.transparentAuth=trustedHosts