【问题标题】:how to find number of days [duplicate]如何找到天数[重复]
【发布时间】:2012-12-16 14:25:32
【问题描述】:

可能重复:
iPhone - get number of days between two dates

我正在尝试比较 2 个日期并找出它们之间的天数。

如下所示:

now = [NSDate date];

// This is i am saving in NSUSerdefault on some condition,like 

if (a == 1) {

    dateFormatter = [[NSDateFormatter alloc] init];
    dateFormatter.dateFormat = @"yyyy-MM-dd HH:MM:SS";
    [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
    NSLog(@"The Current Time is %@",[dateFormatter stringFromDate:now]);
    datesaved = [NSString stringWithFormat:@"%@",[dateFormatter stringFromDate:now]];
    NSLog(@"old date saved : %@",datesaved);

    [dateFormatter release];
}

和 查找当前日期。

现在我想将当前日期与保存在NSUserDefaults 中的日期进行比较,以找出它们之间的天数。

例如:

当前时间是 2012-12-16 19:12:74 旧日期保存:2012-12-12 19:12:74

天数:4

谢谢

【问题讨论】:

  • 顺便说一下,HH:MM:SS 应该是 HH:mm:ss。 MM抢月了!而且,看看您的示例, SS 给出了小数秒(在您的示例中为 74!),而不是秒数。见date format patterns
  • pow(duplicate,09823984712947) 次这些 NSdate 问题在那里。我建议制作 NSDateOverflow ...:p

标签: iphone objective-c ios ipad nsdate


【解决方案1】:
NSDate *date1 = [NSDate dateWithString:@"2010-01-01 00:00:00 +0000"];
NSDate *date2 = [NSDate dateWithString:@"2010-02-03 00:00:00 +0000"];

NSTimeInterval secondsBetween = [date2 timeIntervalSinceDate:date1];

int numberOfDays = secondsBetween / 86400;

NSLog(@"There are %d days in between the two dates.", numberOfDays);

【讨论】:

  • 这会告诉您 24 小时周期的数量,而不是天数。如果是晚上 10 点到凌晨 2 点呢?一天过去了,但只有四个小时。
  • 请注意,由于夏令时和闰秒,一天的长度可能在 82440 到 90001 秒之间变化。
【解决方案2】:

您可以通过这种方式获取日期的日期部分:

NSDate* now = [NSDate date]; // Or date from format
NSCalendar* cal = [NSCalendar currentCalendar];
NSDateComponents* components = [cal components: NSDayCalendarUnit fromDate: now];
NSInteger day = [components day];

对另一个日期做同样的事情并比较它们。

【讨论】:

  • 没有得到这个....我应该怎么做旧日期?
  • 如果他们在同一个月份,你也可以取较早日期的天数(相同的过程),然后计算差异。
猜你喜欢
  • 2014-09-20
  • 2012-03-17
  • 2011-05-29
  • 1970-01-01
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2012-05-15
相关资源
最近更新 更多