2017-03-02 47 views
0

我有一個格式爲2018-01-19 18:30:00 +0000的NSDate對象。現在我只想改變時間組件。更改時間組件後,NSDate對象將爲2018-01-19 10:00:00。我曾嘗試過各種解決方案,但沒有成功。如果任何人有任何解決這個問題的幫助。謝謝你在前進NSDate問題

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components: NSCalendarUnitYear| NSCalendarUnitMonth| NSCalendarUnitDay fromDate:date]; 

[components setHour:hour]; 
[components setMinute:minute]; 
[components setSecond:second]; 
NSDate *newDate = [calendar dateFromComponents:components]; 

另一種解決方案我想是

NSDate *oldDate = date; 
    unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; 
    NSCalendar *calendar = [NSCalendar currentCalendar]; 
    NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate]; 
    comps.hour = 10; 
    comps.minute = 00; 
    comps.second = 00; 
    NSDate *newDate = [calendar dateFromComponents:comps]; 

每次我得到的輸出是輸入日期的下一個日期

+0

要更改日期這樣的2018年1月19日10:00日期: 00對嗎? – 2017-03-02 09:27:20

+0

舊日期和新日期的關係是什麼? – tspentzas

+0

你如何輸出日期? –

回答

1

這裏是你的代碼只需添加dateformater成甲酸

NSDate *oldDate = [[NSDate alloc]init]; 
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *comps = [calendar components:unitFlags fromDate:oldDate]; 
comps.hour = 10; 
comps.minute = 00; 
comps.second = 00; 
NSDate *newDate = [calendar dateFromComponents:comps]; 
NSDateFormatter *formater = [[NSDateFormatter alloc]init]; 
formater.dateFormat = @"YYYY-MM-dd hh:mm:ss"; 
NSLog(@"New Date : %@",[formater stringFromDate:newDate]); 
1

試試這個

NSDateFormatter *formatter = [NSDateFormatter new]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzzz"]; 
NSDate *date = [formatter dateFromString:@"2018-01-19 18:30:00 +0000"]; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [calendar components: NSCalendarUnitDay| NSCalendarUnitHour| NSCalendarUnitMinute|NSCalendarUnitDay|NSCalendarUnitMonth|NSCalendarUnitYear fromDate:date]; 
[components setHour:10]; 
[components setMinute:0]; 
[components setSecond:0]; 
NSDate *newDate = [calendar dateFromComponents:components]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSLog(@"%@",[formatter stringFromDate:newDate]); 
+0

只需更新我的代碼。檢查它 – kb920

+0

謝謝你的解決方案 – kishan

+0

@ kishan如果你想輸出24小時格式,然後格式應該是* yyyy-MM-dd HH:mm:ss *否則它應該是* yyyy-MM-dd hh:mm:ss a * – kb920