我在用户默认设置中关闭我的应用程序(使用applicationWillTerminate)设置日期
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDate *timeClosed = [[NSDate alloc] init];
[defaults setObject: timeClosed forKey:@"svdTimeClosedApp"];
然后当应用程序启动时,我想使用
比较这个时间NSDate *timeSaved = svdTimeClosedApp;
NSDate *timeNow = [[NSDate alloc] init];
double timeInterval = [timeSaved timeIntervalSinceDate:timeNow];
NSLog(@"time now = %@, time saved = %@, time diff = %@", timeNow, timeSaved, [NSString stringWithFormat:@"%d",timeInterval]);
我试图将此输出到日志窗口,期望看到一个大约20秒的格式良好的字符串。麻烦的是,它出现了2047868928!
有什么想法吗?!
(下面日志窗口的输出)
time now = 2009-12-19 20:54:02 +0000, time saved = 2009-12-19 20:48:29 +0000, time diff = 2047868928
感谢您的帮助!
答案 0 :(得分:10)
有几个问题。首先,在stringWithFormat:
中,您要使用%g,而不是%d,%d用于整数值。此外,您应该[timeNow timeIntervalSinceDate:timeSaved]
当前通话会给您带来负值。
答案 1 :(得分:2)
这是我使用的代码。
在我的应用中,当用户同步某些数据时,我会使用以下代码记录当前日期/时间:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:[NSDate date] forKey:@"LastSyncDate"];
[prefs synchronize];
然后,如果我想看看自上次同步以来已经过了多少天,我可以使用它:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDate* dateOfLastSync = [prefs objectForKey:@"LastSyncDate"];
if (dateOfLastSync != nil)
{
NSDate *timeNow = [NSDate date];
double SECONDS_TO_DAY = 60 * 60 * 24;
int timeIntervalInDays = (int)([timeNow timeIntervalSinceDate:dateOfLastSync] / SECONDS_TO_DAY);
NSLog(@"The last sync was %d days ago.", timeIntervalInDays);
}
希望这有帮助。
麦克
答案 2 :(得分:0)
我认为你向后计算timeInterval
,不是吗?我想你想说它逆转了。
double timeInterval = [timeNow timeIntervalSinceDate:timeSaved];