gpt4 book ai didi

objective-c - objective-c 中当月的星期二数

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:04 25 4
gpt4 key购买 nike

我正在寻找一种方法来计算 Objective-C 中当月星期二的数量。

例如,如果代码在今天(2012 年 7 月 16 日)运行,它将输出 5,因为 2012 年 7 月有 5 个星期二(第 3、10、17、24 和 31)。

我在网上看到了在 Excel 中执行此操作的解决方案,但我正在努力将其转换为 Objective C。

感谢您的帮助!好久了,第一次。

最佳答案

我们需要一个日历:

    NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

现在让我们获取当前的月份和年份:

    NSDate *now = [NSDate date];
NSDateComponents *monthAndYear = [calendar components:NSMonthCalendarUnit | NSYearCalendarUnit fromDate:now];

我们可以用它来获取当前月份和年份的第一个星期二:

    NSDateComponents *firstTuesdayComponents = [monthAndYear copy];
firstTuesdayComponents.weekday = 3; // Sunday = 1
firstTuesdayComponents.weekdayOrdinal = 1; // First Tuesday
NSDate *firstTuesday = [calendar dateFromComponents:firstTuesdayComponents];

我们也可以用它来获取下个月的第一天:

    NSDateComponents *firstOfNextMonthComponents = [monthAndYear copy];
firstOfNextMonthComponents.month += 1;
firstOfNextMonthComponents.day = 1;
NSDate *firstOfNextMonth = [calendar dateFromComponents:firstOfNextMonthComponents];

现在我们可以查询两个日期之间的天数:

    NSDateComponents *differenceComponents = [calendar components:NSDayCalendarUnit fromDate:firstTuesday toDate:firstOfNextMonth options:0];

大多数周有 7 天,只有一个星期二,所以我们应该将天数除以 7。如果有余数,我们应该四舍五入,因为我们是从星期二开始计算的。

    int tuesdayCount = (differenceComponents.day + 6) / 7; // Adding 6 makes the integer division round up.
NSLog(@"There are %d Tuesdays in month %d of year %d.", tuesdayCount, (int)monthAndYear.month, (int)monthAndYear.year);

现在让我们跳上时光机来测试一下:

There are 5 Tuesdays in month 1 of year 2012.
There are 4 Tuesdays in month 2 of year 2012.
There are 4 Tuesdays in month 3 of year 2012.
There are 4 Tuesdays in month 4 of year 2012.
There are 5 Tuesdays in month 5 of year 2012.
There are 4 Tuesdays in month 6 of year 2012.
There are 5 Tuesdays in month 7 of year 2012.
There are 4 Tuesdays in month 8 of year 2012.
There are 4 Tuesdays in month 9 of year 2012.
There are 5 Tuesdays in month 10 of year 2012.
There are 4 Tuesdays in month 11 of year 2012.
There are 4 Tuesdays in month 12 of year 2012.

关于objective-c - objective-c 中当月的星期二数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11515213/

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