2016-11-21 105 views
0

我有字符串格式的日期,即UTC時區。 我想添加20分鐘的日期。向UTC日期添加20分鐘

我使用下面的代碼爲:

NSString *strFinal = @"2016-11-21 13:07:04"; 
    //NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    //[dateFormatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"]; 
    self.dateFormatter = [[NSDateFormatter alloc]init]; 
    [self.dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 
    NSDate *dateFromString = [[NSDate alloc] init]; 
    [self.dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]]; 
    dateFromString = [self.dateFormatter dateFromString:strFinal]; 
    self.dt = [[NSDate alloc]init]; 
    self.dt = dateFromString; 

    NSTimeInterval secondsInEightHours = 20 * 60; 
    //NSDate *dateEightHoursAhead = [dateFromString dateByAddingTimeInterval:secondsInEightHours]; 
    NSDate *dateEightHoursAhead = [self.dt dateByAddingTimeInterval:secondsInEightHours]; 

    //after adding 20 mins check 
    NSString *strFinaltoPass = [self.dateFormatter stringFromDate:dateEightHoursAhead]; 

但隨着這個日期時間它給strFinaltoPass爲空。

這工作正常與時間少於12小時,但在12小時後顯示爲空。

任何幫助將不勝感激。

感謝,

+0

什麼是'dateEightHoursAhead'當字符串回來'nil'? – user1118321

+0

dateEightHoursAhead是2016-10-20 00:20:00 +0000當回到零 – puja

+0

嘗試使用'NSDateComponents'並將20分鐘添加到'minutes'屬性,您將需要添加邏輯來增加hours屬性if分鐘高於60 ...然後將其轉換回'NSDate' –

回答

0

您可以使用NSCalendar添加分鐘,這裏有一個例子

NSString *strDate = @"2016-11-21 13:07:04"; 
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init]; 
[dateFormatter1 setDateFormat:@"yyyy-MM-dd hh:mm:ss"]; 

NSDate *dateTemp = [dateFormatter1 dateFromString:strDate]; 
NSCalendar *calendar = [NSCalendar currentCalendar]; 

NSDate *dateNew = [calendar dateByAddingUnit:NSCalendarUnitMinute value:20 toDate:dateTemp options:NSCalendarWrapComponents]; 

這裏value = 20爲20分鐘,在添加日期