2016-11-21 76 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分钟,在添加日期