iPhone有没有办法从NSDateComponents获取nsdate

时间:2012-11-03 15:02:58

标签: iphone ios nsdate nsdatecomponents

我试图弄清楚如何创建一个设置到年底的NSDate。即2013年, 我找到了一种方法,你可以通过添加秒数来获得自1970年以来的时间。我没有看到这种情况有效,因为在闰年中需要几秒钟。

我找到了以下代码,将NSDateComponents设置为年底。

    NSDateComponents *comps = [[NSDateComponents alloc] init];
    [comps setYear:2012];
    [comps setMonth:12];
    [comps setDay:11];

    [comps setHour:0];
    [comps setMinute:0];
    [comps setSecond:0];

有没有办法从中获取NSDate? 我尝试做的是使用

获得一年到一年的时间
NSDateComponents *timeDifference = [[NSCalendar currentCalendar] 
                                        components:  NSMonthCalendarUnit| NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit  fromDate:[NSDate date] toDate:comps options:0];

结束日期需要NSDate

2 个答案:

答案 0 :(得分:3)

是的,有。

使用

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *newDate = [calendar dateFromComponents:comps];

您可以根据自己的要求更改日历标识符。

有关详细信息,请参阅此link

答案 1 :(得分:1)

下面是一些可能指向正确方向的代码。

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2012];
[comps setMonth:12];
[comps setDay:11];

[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];

NSDate *myDate = [[NSCalendar currentCalendar] dateFromComponents:comps];