簡體   English   中英

每月第一天的工作日

[英]Weekday of first day of month

我需要得到這個月第一天的工作日。 例如,對於2013年9月的當月,第一天是星期日。

首先,獲取當月的第一天(例如):

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:(NSEraCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit) fromDate:today];
components.day = 1;
NSDate *firstDayOfMonth = [gregorian dateFromComponents:components];

然后使用NSDateFormatter將其打印為工作日:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];  
[dateFormatter setDateFormat:@"EEEE"]; 
NSLog(@"%@", [dateFormatter stringFromDate:firstDayOfMonth]);

PS還會看一下日期格式模式

以下是獲取當月第一天工作日名稱的解決方案

NSDateComponents *weekdayComps = [[NSDateComponents alloc] init];
weekdayComps = [calendar.currentCalendar components:calendar.unitFlags fromDate:calendar.today];
weekdayComps.day = 1;
NSDateFormatter *weekDayFormatter = [[NSDateFormatter alloc]init];
[weekDayFormatter setDateFormat:@"EEEE"];
NSString *firstweekday = [weekDayFormatter stringFromDate:[calendar.currentCalendar dateFromComponents:weekdayComps]];
NSLog(@"FIRST WEEKDAY: %@", firstweekday);

對於工作日索引,請使用此選項

NSDate *weekDate = [calendar.currentCalendar dateFromComponents:weekdayComps];
NSDateComponents *components = [calendar.currentCalendar components: NSWeekdayCalendarUnit fromDate: weekDate];
NSUInteger weekdayIndex = [components weekday];
NSLog(@"WEEKDAY INDEX %i", weekdayIndex);

如果需要,您還可以增加或減少月份。

根據您需要的輸出,您可以使用NSDateFormatterNSDateFormatter )或者您可以使用NSDateComponents類。 NSDateFormatter將為您提供字符串表示, NSDateComponents將為您提供整數值。 方法weekday可以做你想要的。

NSDateComponents *components = ...;
NSInteger val = [components weekday];

對於Swift 4.2

第一:

extension Calendar {
    func startOfMonth(_ date: Date) -> Date {
        return self.date(from: self.dateComponents([.year, .month], from: date))!
    }
}

第二:

self.firstWeekDay = calendar.component(.weekday, from: calendar.startOfMonth(Date()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM