使用Cocoa/objective-C从整数(年…秒)生成NSDate
我有一年,蒙特,第二个是整数类型,我需要根据它们构建NSDate。 我尝试了这个代码,但得到了(null) 此代码有什么问题?而不是使用Cocoa/objective-C从整数(年…秒)生成NSDate,objective-c,cocoa,nsdate,Objective C,Cocoa,Nsdate,我有一年,蒙特,第二个是整数类型,我需要根据它们构建NSDate。 我尝试了这个代码,但得到了(null) 此代码有什么问题?而不是 [tempFormatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"]; 写 使用日期组件创建一个NSDateComponents,然后使用NSCalendar的dateFromComponents:将其转换为日期,这将更加简单。有一个例子说明了如何做到这一点: NSDateComponents *comps = [[NSDat
[tempFormatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];
写
使用日期组件创建一个
NSDateComponents
,然后使用NSCalendar的dateFromComponents:
将其转换为日期,这将更加简单。有一个例子说明了如何做到这一点:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:day];
[comps setMonth:month];
[comps setYear:year];
[comps setHour:hour];
[comps setMinute:minute];
[comps setSecond:second];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [cal dateFromComponents:comps];
[comps release];
消息中的字符串是什么?它看起来有效吗?把它也贴在这里。“2011-03-14 20:14:40”是用NSLog(@“%@”,message)打印出来的内容;这是一个更好的方法!另一种方法是有效地将整数日期“组件”转换为字符串,并从字符串转换为NSDate!那肯定是自找麻烦。你不能使用nsgregorianalendar
。。。不幸的是,它被弃用了。完全删除NSCalendar*cal
的初始化/发布,并在创建date
时将cal
更改为[NSCalendar currentCalendar]
。您不能再指定公历。此外,您还可以通过将行更改为:[NSDateComponents new]来简化comps
的创建
@DDPWNAGE:根据,它基本上被重命名为nscalendardidentifiergregorian
。如果当前日历是其他受支持的日历之一,则使用[NSCalendar currentCalendar]
将无法正常工作。
[tempFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:day];
[comps setMonth:month];
[comps setYear:year];
[comps setHour:hour];
[comps setMinute:minute];
[comps setSecond:second];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [cal dateFromComponents:comps];
[comps release];