我从约会到现在都有两个日期。我在NSString中分别存储了两个日期,分别是string1和string 2。现在我的问题是我想要这两个日期的差异。我的日期格式为04-Mar-2014
和14-Mar-2014
,我希望结果类似10
。IOS中的日期差异
回答
我认为,根据你的问题,我的假设是difference between two dates
。你可以使用这个。
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
NSDate *date1 = [dateFormat dateFromString:@"04-Mar-2014"];
NSDate *date2 = [dateFormat dateFromString:@"14-Mar-2014"];
NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];
int numberOfDays = secondsBetween/86400;
NSLog(@"There are %d days in between the two dates.", numberOfDays);
谢谢你,这是完美的答案是..谢谢Dude ..干杯! – user3401290
由于他使用NSDateComponents,Damir179或Popeye提供的解决方案似乎更好。如果时间有变化(冬季/夏季)会怎样?你会得到一个错误的天数,因为你使用86400. – Larme
@Larme你能否澄清它与他们的答案有什么不同?对此给出正确的解释。为什么要投降?如果你知道正确的答案,只需解释更多。 – Mani
三,你需要的方法是:
+ (NSDateFormatter *)dateFormatter
{
static NSDateFormatter *dateFormatter = nil;
if (dateFormatter == nil)
{
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"YOUR_STRING_FORMAT"];
}
[NSTimeZone resetSystemTimeZone];
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
return dateFormatter;
}
+ (NSDate *)dateWithString:(NSString *)dateString
{
return [[self dateFormatter] dateFromString:dateString];
}
- (NSInteger)distanceInDaysToDate:(NSDate *)date
{
NSDateComponents *components1 = [CURRENT_CALENDAR components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:self];
components1.hour = 0;
components1.minute = 0;
components1.second = 0;
NSDateComponents *components2 = [CURRENT_CALENDAR components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:date];
components1.hour = 0;
components1.minute = 0;
components1.second = 0;
NSDate *date1 = [CURRENT_CALENDAR dateFromComponents:components1];
NSDate *date2 = [CURRENT_CALENDAR dateFromComponents:components2];
NSDateComponents *components = [CURRENT_CALENDAR components:NSDayCalendarUnit fromDate:date1 toDate:date2 options:0];
return components.day;
}
如果移动他们进入的NSDate类最佳。
在保持NSDate
对象是最好的解决方案,可以使用NSDateFormatter
与相应地设置您的日期格式的格式字符串重新从字符串NSDate
对象。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MMM-yy"];
[dateFormatter dateFromString:yourString];
然后你可以使用例如NSDate
的timerIntervalSinceDate:
方法和计算的差异。或者,您可以提取NSDateComponents
并通过这种方式获得差异。
您可以使用下面给出的代码获得差异: -
NSString *start = @"2010-09-01";
NSString *end = @"2010-12-01";
NSDateFormatter *f = [[NSDateFormatter alloc] init];
[f setDateFormat:@"yyyy-MM-dd"];
NSDate *startDate = [f dateFromString:start];
NSDate *endDate = [f dateFromString:end];
[f release];
NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorianCalendar components:NSDayCalendarUnit
fromDate:startDate
toDate:endDate
options:0];
[gregorianCalendar release];
components
现在持有的差异。
NSLog(@"%ld", [components day]);
礼貌:-vikingosegundo
你们两个日期是
NSString* str1 = @"04-Mar-2014";
NSString* str2 = @"14-Mar-2014";
现在转换两个日期中DD-MM-YYY如下
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd-MM-yyyy"];
现在字符串转换成日期
NSDate *date1 = [dateFormat dateFromString:str1];
NSDate *date2 = [dateFormat dateFromString:str2];
计算两个日期之间的转换
NSTimeInterval distanceBetweenDates = [date2 timeIntervalSinceDate:date1];
double secondsInAnHour = 3600;
NSInteger hoursBetweenDates = distanceBetweenDates/secondsInAnHour;
NSInteger day = hoursBetweenDates/ 24;
您的输出:10
- 1. 日期差异
- 2. 日期差异
- 3. 日期差异
- 4. SQL中的日期差异
- 5. PHP中的日期差异?
- 6. HSQLDB中的日期差异
- 7. mysql中的日期差异
- 8. Java中的日期差异
- 9. Android中的日期差异
- 10. PHP中的日期差异
- 11. mysql中的日期差异
- 12. EF4中的日期差异
- 13. JavaScript中的日期差异
- 14. MySQL中的日期差异
- 15. php日期差异?
- 16. 日期差异Javascript
- 17. PHP日期差异
- 18. 按日期差异
- 19. SQL日期差异
- 20. PHP日期差异
- 21. Sqlite日期差异
- 22. Sharepoint日期差异
- 23. SVNKit日期差异
- 24. Javascript日期差异
- 25. MySQL日期差异
- 26. php日期差异
- 27. jquery日期差异
- 28. Android的日期差异
- 29. JavaScript的日期差异
- 30. 日期之间的差异
那么你尝试过什么? – Amar
谢谢,但我可以知道downvote的原因吗? – user3401290
我没有投票。但我认为其原因是缺乏信息/努力。 – Amar