【发布时间】:2011-01-20 05:52:56
【问题描述】:
给定三个整数,分别代表日、月和年,什么代码可以将这些整数组合成一个日期对象?
【问题讨论】:
标签: objective-c ios cocoa-touch nsdate nsinteger
给定三个整数,分别代表日、月和年,什么代码可以将这些整数组合成一个日期对象?
【问题讨论】:
标签: objective-c ios cocoa-touch nsdate nsinteger
你应该看看NSDateComponents:
int y = 2011;
int m = 1;
int d = 15;
NSDateComponents *dc = [[NSDateComponents alloc] init];
[dc setYear:y];
[dc setMonth:m];
[dc setDay:d];
NSLog(@"%@: %@", [[dc date] class], [dc date]);
【讨论】:
NSDateComponents 没有 -date 方法,但您可以使用 NSCalendar 将其转换为 NSDate。
NSDateComponents 类文档(iOS 4.2 文档集),发现-date 方法位于calendar 和day 方法之间。我错过了什么吗?
NSDateComponents 确实没有 -date 方法。这个问题有 iOS 标签,所以我认为它是针对 Cocoa Touch 的。
NSDateFormatter 使用Unicode Standard 将日期字符串解析为日期。因此,将整数格式化为日期字符串,然后使用 NSDateFormatter 对其进行解析:
// assume year, month and day are integers that are formatted properly and don't
// include invalid ranges
NSString* dateString = [NSString stringWithFormat:@"%04d %02d %02d", year, month, day];
NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
// Choose a format of YEAR MONTH DATE per the standard
[formatter setDateFormat:@"yyyy MM dd"];
NSDate* date = [formatter dateFromString:dateString];
[formatter release];
您可以将格式字符串设置为任何格式,只要您使用 Unicode 标准(上面链接)并将整数转换为相同的格式(显然)。
【讨论】: