5

月の初日の平日を取得する必要があります。たとえば、現在の月である 2013 年 9 月の場合、最初の日は日曜日になります。

4

4 に答える 4

10

最初に、当月の最初の日を取得します (例):

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も見てくださいDate Format Patterns

于 2013-09-17T21:48:53.820 に答える
1

必要な出力に応じて、NSDateFormatter(すでに述べたように)使用するか、NSDateComponentsクラスを使用できます。NSDateFormatter文字列表現NSDateComponentsを提供し、整数値を提供します。メソッドweekdayはあなたが望むことをするかもしれません。

NSDateComponents *components = ...;
NSInteger val = [components weekday];
于 2013-09-17T21:52:06.100 に答える
0

スイフト 4.2 の場合

初め:

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

2番:

self.firstWeekDay = calendar.component(.weekday, from: calendar.startOfMonth(Date()))
于 2019-04-05T18:18:03.120 に答える