1

我是目标 C 的新手,我正在开发一个应用程序来确定用户给出年份和天数时的出生日期。例如,如果用户将 1985 年作为他/她的出生年份,天数为 311。他/这里的出生日期是 1985 年 11 月 6 日。那么如何从 1985 年的 311 获得 11 月 6 日?请帮忙

4

4 回答 4

4

永远不必计算当前年份是否是闰年。永远不会。让框架为您做到这一点。比你或我聪明得多的人已经为我们做到了这一点,那么我们到底为什么要使用永远无法解释所有复杂日历变化的次优算法来重新发明这个轮子呢?

自己做这件事很愚蠢。所以不要:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *startComponents = [[NSDateComponents alloc] init];
[startComponents setYear:1985];
[startComponents setDay:311];

NSDate *date = [gregorian dateFromComponents:startComponents];

NSLog(@"endDate: %@", date);

这记录:

endDate: 1985-11-07 08:00:00 +0000
于 2012-05-18T18:13:39.203 回答
-1

像这样的东西(未经测试):

NSDateFormatter *df = [[NSDateFormatter alloc] init] autorelease];
[df setDateFormat:@"yyyy"];
NSDate *date1 = [df dateWithString:@"1985"];
NSDate *date2 = [df dateByAddingTimeInterval:60*60*24*311]; //
于 2012-05-18T18:21:34.837 回答
-2

首先,您为什么要从某人那里获取天数而不是获取月份和日期。用户将不知道他们在一年中的哪一天出生,并且会因为试图弄清楚而感到沮丧。

要回答您的问题,您可以有一个数组来存储每个月末的天数 {31, 28, 31, 30, ...} 并将其用作参考(在循环中减去总数)。您还必须检查年份是否为闰年,如果超过 59,则从总数中减去一个。

于 2012-05-18T18:04:26.393 回答
-2

您不需要 Objective-C 中的任何特定内容...首先您需要知道这一年是否是闰年。然后,您需要计算从几个月到目标日期结束的天数。

于 2012-05-18T18:05:53.100 回答