Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDate:根据时间添加一天_Iphone_Objective C_Nsdate - Fatal编程技术网

Iphone NSDate:根据时间添加一天

Iphone NSDate:根据时间添加一天,iphone,objective-c,nsdate,Iphone,Objective C,Nsdate,在我的应用程序中,我得到了一个日期和开始时间相同的日期和结束时间。结束时间可能是第二天的时间 example : Date : 11/01/2011 start time : 5:30 PM end time : 4:30 AM (of next day morning) 我不知道截止日期 如何根据结束时间在开始日期中添加一天。我在SO中引用了许多答案,但找不到解决方案。脏(无DST检查)方法:如果将所有内容都转换为通用单位(即NSTimeInter

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

example : Date : 11/01/2011
          start time : 5:30 PM
          end time :   4:30 AM (of next day morning)
我不知道截止日期


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

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

您应该使用此功能

NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400];
这里86400是60(秒)*60(分钟)*24(小时)。
如果开始日期不是当前日期,则可以使用此方法

- (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

现在你有两个不同日期的时间间隔,对吗?现在只需减去它,你就会得到你想要的。

解决:根据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];
    }

你的问题不清楚。请您指定一些要点,如从何处获取以及如何更改日期。我使用web服务从服务器获取。您好,这方面的最终解决方案是什么。当你没有结束日期时。@MinuMaster:请看下面我的答案。。。因为我只想增加一天…我如何才能获得下午5:30到凌晨4:40的N时间间隔?因为我没有凌晨4:30的约会???我没有两个约会。。只有一个日期具有开始时间和结束时间。现在根据结束时间,我必须计算结束时间是同一天还是下一天。这很简单,但一开始我不明白你在说什么…仍然有一件事结束时间改变了…应该是上午4:30,但它给出了下午5点!!!不不不不!!!此方法仅在您希望在时间点上精确添加86400秒时有用。使用此方法添加1天是不够的,因为不是每天都有86400秒。您应该使用
NSDateComponents
NSCalendar