2011-03-06 63 views
3

我需要更改NSDate對象。我基本上做的是改變一年的價值。NSDate - 更改年份值

例如:

NSString *someYear = @"2093"; 
    NSDate *date = [NSDate date]; // Gets the current date. 
    ... Create a new date based upon 'date' but with specified year value. 

因此,與返回由init 2011-03-06 22時17分50秒+0000 '約會',我想創建一個日期與2093年3月6日22: 17:50 +0000。

但是,我希望這是儘可能的文化中性,所以它會工作在任何時區。

謝謝。

+0

看看我的筆記https://github.com/onmyway133/blog/issues/54 – onmyway133 2017-06-09 10:55:42

回答

2

看看NSCalendar,特別是components:fromDate:dateFromComponents:方法。

+0

非常感謝你 – 2011-03-06 22:39:14

3

我設法用指針Hoha給我的答案。

NSNumber *newYear = [[NSNumber alloc] initWithInt:[message intValue]]; 
    NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    unsigned int unitFlags = NSYearCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit; 
    NSDateComponents* dateComponents = [gregorian components:unitFlags fromDate:[NSDate date]]; 
    [dateComponents setYear:[newYear intValue]]; 
    NSDate *newDate = [gregorian dateFromComponents:dateComponents]; 
    [newYear release]; 
+1

其實你可以(根據設備設置一個)獲得當前日曆'[NSCalendar currentCalendar]'或[NSCalendar autoupdatingCurrentCalendar]'。 – hoha 2011-03-06 22:48:54

8

這是我的代碼,用於設置出生日期選擇的UIDatePicker限制。允許的最大年齡爲100年

_dateOfBirth.maximumDate = [NSDate date]; 

    //To limit the datepicker year to current year -100 
    NSDate *currentDate = [NSDate date]; 
    NSUInteger componentFlags = NSYearCalendarUnit; 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:componentFlags fromDate:currentDate]; 
    NSInteger year = [components year]; 
    NSLog(@"year = %d",year); 
    [components setYear:-100]; 
    NSDate *minDate = [[NSCalendar currentCalendar] dateByAddingComponents:components toDate:currentDate options:0]; 
    _dateOfBirth.minimumDate = minDate; 
2

從iOS 8開始,您可以設置特定的日期組件。例如:

date = [calendar dateBySettingUnit:NSCalendarUnitYear value:year ofDate:date options:0]; 
+0

過去一年設置不起作用! – onmyway133 2017-06-09 10:09:49