存储日期并进行比较

时间:2015-08-26 08:55:05

标签: objective-c iphone xcode nsdate

在我的应用程序中,我要求每次启动应用程序检查日期并将其与上次启动应用程序时的日期进行比较。日期之间的差异必须是14天。

示例:

上次日期20.8.2015

现任日期:2015年8月26日

比较这两个日期,如果差异小于或等于14天打印“过去14天”。

我的代码:

  - (void)viewDidLoad {
       NSDateFormatter *dateformate=[[NSDateFormatter alloc]init];
       [dateformate setDateFormat: @"dd.MM.yyyy HH:mm:ss"];
       NSString *date = [dateformate stringFromDate:[NSDate date]];

       //TO STORE DATE
       NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
       [defaults setObject:date forKey:@"Date"];
       [defaults synchronize];
    }

1 个答案:

答案 0 :(得分:0)

所有代码直接输入到答案中,期待轻微错误并视为伪代码

第一个NSDate值可以直接存储在用户默认值中,这比在字符串表示之间来回转换要好得多。所以你需要的日期是:

NSDate *now = [NSDate date];
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
[defaults setObject:now forKey:@"Date"];

在执行此操作之前,您应该检索以前的值:

NSDate *lastRun = [defaults objectForKey:@"Date"];

如果这返回nil,那么就没有最后一次运行,这是第一次运行。

如果不是nil,请使用timeIntervalSinceDate:方法查找两个日期之间的NSTimeInterval,这是一个以秒为单位的值。比较那个14天,几秒钟,你就完成了......

除非你要考虑日历不是24小时60分钟等的日历 - 即你希望绝对精确 - 在这种情况下你需要使用{{1计算天数的差异。然而,对于许多情况,这是不必要的。

HTH