gpt4 book ai didi

objective-c - 如何获取两个日期之间的月份和年份的名称

转载 作者:太空狗 更新时间:2023-10-30 03:58:31 25 4
gpt4 key购买 nike

我想获取两个日期之间的月份和年份的名称。假设我的开始日期是 01-23-2010,结束日期是 02-25-2011,因此我想获得相关年份的月份列表,例如 2010 年 1 月、2010 年 2 月 ----- 2011 年 2 月。

最佳答案

这是我大概的做法(警告:在浏览器中输入,yadda yadda):

NSDate *startDate = ...; // your start date
NSDate *endDate = ...; // your end date
NSDateComponents *monthDifference = [[NSDateComponents alloc] init];

NSMutableArray *dates = [NSMutableArray arrayWithObject:startDate];
NSUInteger monthOffset = 0;
NSDate *nextDate = startDate;
do {
[dates addObject:nextDate];

[monthDifference setMonth:monthOffset++];
NSDate *d = [[NSCalendar currentCalendar] dateByAddingComponents:monthDifference toDate:startDate options:0];
nextDate = d;
} while([nextDate compare:endDate] == NSOrderedAscending);

这应该会为您提供一组 NSDate 对象,这些对象表示大约相隔一个月的日期,从您的开始日期开始,到您的结束日期或前后结束。

如果你想以可读的方式显示它们,你将使用 NSDateFormatter:

NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"MMMM yyyy"];
for (NSDate *date in dates) {
NSLog(@"%@", [f stringFromDate:date]);
}

[f release];

当我在我的电脑上运行它时,我得到:

EmptyFoundation[3327:a0f] January 2010
EmptyFoundation[3327:a0f] February 2010
EmptyFoundation[3327:a0f] March 2010
EmptyFoundation[3327:a0f] April 2010
EmptyFoundation[3327:a0f] May 2010
EmptyFoundation[3327:a0f] June 2010
EmptyFoundation[3327:a0f] July 2010
EmptyFoundation[3327:a0f] August 2010
EmptyFoundation[3327:a0f] September 2010
EmptyFoundation[3327:a0f] October 2010
EmptyFoundation[3327:a0f] November 2010
EmptyFoundation[3327:a0f] December 2010
EmptyFoundation[3327:a0f] January 2011
EmptyFoundation[3327:a0f] February 2011

这看起来有点复杂,但它有几个优点:

  • 无论您使用的是什么日历系统,它都可以正常工作。只需将 [NSCalendar currentCalendar] 调用更改为不同的日历,它就会在那个日历中工作(希伯来语、伊斯兰语等)
  • 它解释了天数奇异的月份(28 天对 29 天,或日历中有闰月 [是的,它们存在])

关于objective-c - 如何获取两个日期之间的月份和年份的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5169751/

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