簡體   English   中英

如果今天是星期天,則獲取下周返回的“周開始”日期

[英]Get Week Start date returning next week day if today is sunday

我有一個函數,可以通過傳遞任何特定的日期來返回工作日,在我的應用中, 星期一將是星期開始日 ,除非將當前日期設置為星期日,否則它可以正常工作,在這種情況下,該函數將在下一個工作日返回,

+(NSMutableArray*) getWeekDatesList :(NSDate*) date {
    @autoreleasepool {

        NSDate *startingDateOfWeek = [self getWeekStartDateWithDate:date];
        return [self getWeekDatesListWithStartDate:startingDateOfWeek];
    }  
},

獲取星期開始日期的功能是

+(NSDate*) getWeekStartDateWithDate:(NSDate*) date{
    @autoreleasepool {

        NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
        [gregorian setLocale:[NSLocale currentLocale]];
        [gregorian setFirstWeekday:2]; // 2 monday

        [gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
        NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekOfYearCalendarUnit |NSWeekCalendarUnit fromDate:date];

        int value =([components day]-([components weekday]-2));

        [components setDay:value];
        [components setHour:0];
        [components setMinute:0];
        [components setSecond:0];

        NSDate *beginningOfWeek = [gregorian dateFromComponents:components];
        return beginningOfWeek;
    }
}

例:

今天的設置為2014年4月20日星期日) ,周開始日期為2014年4月21日 ,但預計周開始日期為2014年4月13日

即使將當前日期設置為星期日,我如何使它正常工作?

謝謝

在計算中,您必須檢查[components weekday]是否小於或大於2(Monday),並相應地修改這些組件以獲得上一個星期一。

但是您可以將計算簡化為:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
// [gregorian setLocale:[NSLocale currentLocale]]; (This is the default.)
[gregorian setFirstWeekday:2]; // 2 = Monday
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

NSDate *beginningOfWeek;
[gregorian rangeOfUnit:NSWeekCalendarUnit startDate:&beginningOfWeek interval:NULL forDate:date];

這將按預期提供2014-04-14 00:00:00 +0000 (星期一)。

備注:您應檢查是否確實要將時區設置為GMT。 如果您未設置時區,那么您將根據當地時區進入一周的開始時間。

暫無
暫無

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

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