gpt4 book ai didi

ios - 显示当前星期几和日期

转载 作者:行者123 更新时间:2023-11-29 02:39:37 26 4
gpt4 key购买 nike

我有点问题。我希望我显示当前周的所有日期(因为我写的是第 38 周(公历))。我拥有的很好,但是它没有显示正确的日期。例如:这周的星期一是 9 月 15 日,星期日是 9 月 21 日。当我将一周的第一天设置为 9 月 14 日星期日。

NSDate *currentDate = [NSDate date];
NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

NSDateComponents *currentComps = [myCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekOfYearCalendarUnit | NSWeekdayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:currentDate];
int thisWeeksNumber = currentComps.weekOfYear;
NSLog(@"1 %d", thisWeeksNumber); //This displays the correct week.

[currentComps setWeekday:1];
NSDate *firstDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:2];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:3];
NSDate *thirdDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:4];
NSDate *fourthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:5];
NSDate *fifthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:6];
NSDate *sixthDayOfTheWeek = [myCalendar dateFromComponents:currentComps];
[currentComps setWeekday:7];
NSDate *seventhDayOfTheWeek = [myCalendar dateFromComponents:currentComps];

NSDateFormatter *myDateFormatter = [[NSDateFormatter alloc] init];
myDateFormatter.dateFormat = @"yyyy-MM-dd";
NSString *firstStr = [myDateFormatter stringFromDate:firstDayOfTheWeek];
NSString *secondStr = [myDateFormatter stringFromDate:secondDayOfTheWeek];
NSString *thirdStr = [myDateFormatter stringFromDate:thirdDayOfTheWeek];
NSString *fourthStr = [myDateFormatter stringFromDate:fourthDayOfTheWeek];
NSString *fifthStr = [myDateFormatter stringFromDate:fifthDayOfTheWeek];
NSString *sixthStr = [myDateFormatter stringFromDate:sixthDayOfTheWeek];
NSString *seventhStr = [myDateFormatter stringFromDate:seventhDayOfTheWeek];

NSLog(@"\n %@ \n %@ \n %@ \n %@ \n %@ \n %@ \n %@", firstStr, secondStr, thirdStr, fourthStr, fifthStr, sixthStr, seventhStr);

这应该显示 9 月 15 日到 9 月 21 日,但它显示 9 月 14 日(星期日)到 9 月 21 日(星期六)。

提前致谢!

最佳答案

如果你检查文档,它确实做了它应该做的事情:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateComponents_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDateComponents/setWeekday :

当您调用 setWeekDay 时 - 1 表示星期日,因此如果您需要从星期一开始,您的第一个调用应该是 setWeekDay:2

更新:

至于在第一天之后获取所有连续的天,我建议实现类似的东西(将此函数插入​​到您的代码中):

- (NSDate*)dateByAddingDays:(NSInteger)days toDate:(NSDate *)date
{
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
comps.day = days;

return [calendar dateByAddingComponents: comps toDate: date options: 0];
}

并使用此函数从一周开始之日起添加 1-6。基本上替换了所有第二天和其他天的代码:

[currentComps setWeekday:2];
NSDate *secondDayOfTheWeek = [myCalendar dateFromComponents:currentComps];

具有以下内容:

NSDate *secondDayOfTheWeek = [self dateByAddingDays:1 toDate:firstDayOfTheWeek];
NSDate *thirdOfTheWeek = [self dateByAddingDays:2 toDate:firstDayOfTheWeek];
...

关于ios - 显示当前星期几和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25950343/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com