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
。