dateByAddingTimeInterval在IOS应用程序开发中没有给出所需的结果

时间:2012-09-21 13:24:06

标签: iphone objective-c ios xcode cordova

我有以下目标C代码:

 NSString *dateStr = @"2012-09-21 05:00:00";

// Convert string to date object
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSDate *dateNew = [formatter2 dateFromString:dateStr];  
//NSLog(@"date new %@" , [dateNew description]);

NSDate *dateConverted = [dateNew dateByAddingTimeInterval:interval];
//NSLog(@"date converted=%@",dateConverted);

NSString *dateConvertedStr = [formatter2 stringFromDate:dateConverted];
NSLog(@"date conv str=%@",dateConvertedStr);

这里我试图首先将日期字符串转换为日期对象(dateNew)。然后添加一个间隔以获得新的dateConverted。最后,此日期对象再次转换为字符串并打印。 但我没有得到理想的结果。 例如:对于给定的日期字符串,如果间隔是45000.00,那么它基本上是12.5小时。所以,我的dateConvertedStr应该给'2012-09-21 17:30:00'。但它没有给出预期的结果。 任何人都可以建议。我错过了什么。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这里的问题是您提供的格式字符串。在您的示例中(假设间隔为45000.00f),它返回date conv str=2012-09-21 5:30:00,因为您使用的是基于12h的格式。

请尝试此操作(请注意大写H):

[formatter2 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

现在,dateConvertedStr 2012-09-21 17:30:00符合预期。