NSDate:根据时间添加一天

时间:2011-11-10 04:33:22

标签: iphone objective-c nsdate

在我的应用程序中,我收到日期和相同日期和结束时间的开始时间。结束时间可能是第二天的时间。

example : Date : 11/01/2011
          start time : 5:30 PM
          end time :   4:30 AM (of next day morning)

我没有收到结束日期。

如何根据结束时间在开始日期中添加一天。我在SO上提到了许多答案,但找不到解决方案。

3 个答案:

答案 0 :(得分:5)

你应该使用这个功能

NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400];

此处86400为60(秒)* 60(分钟)* 24(小时)。
如果您的startDate不是当前日期,那么您可以使用此方法

- (id)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)anotherDate

现在你变得像这样了

example : Date : 11/01/2011
          start time : 5:30 PM
          end time :   4:30 AM (of next day morning)

所以你可以有两个日期,代表开始时间和结束时间。使用以下方法获取时间间隔

- (NSTimeInterval)timeIntervalSince1970

现在你有两个不同日期的两个时间间隔,对吧?现在简单地减去它,你就会得到你想要的东西。

答案 1 :(得分:2)

解决:根据Akkis的回答......

    NSDate *startDate = [df dateFromString:startingDateTime];   
    NSDate *endDate = [df dateFromString:endingDateTime];

    NSComparisonResult result;
    result = [startDate compare:endDate];

    if(result == NSOrderedDescending)
    {
        NSLog(@"newDate is greater");

        endDate = [endDate dateByAddingTimeInterval:60*60*24];
    }

答案 2 :(得分:1)

脏(无DST检查)方法:如果将所有内容转换为常用单位(即NSTimeInterval / double秒),则会更容易。检查结束时间是否小于开始时间(从午夜转换为秒)。从endSeconds减去startSeconds,如果结果为负,则添加24小时的秒(24 * 60 * 60 = 86400)。添加结果以开始日期/时间。