在我的应用程序中,我收到日期和相同日期和结束时间的开始时间。结束时间可能是第二天的时间。
example : Date : 11/01/2011
start time : 5:30 PM
end time : 4:30 AM (of next day morning)
我没有收到结束日期。
如何根据结束时间在开始日期中添加一天。我在SO上提到了许多答案,但找不到解决方案。
答案 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)。添加结果以开始日期/时间。