这是最后的办法,因为我这一生都不能解决它!
我正在用户默认设置中设置应用程序关闭的日期(使用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谢谢你的帮助!
发布于 2009-12-20 05:26:45
有几个问题。首先,在您的stringWithFormat:中,您希望使用%g,而不是%d,%d用于整数值。另外,你应该做[timeNow timeIntervalSinceDate:timeSaved]你的当前调用会给你一个负值。
发布于 2013-07-17 18:02:48
下面是我使用的代码。
在我的应用程序中,当用户同步一些数据时,我使用以下代码记录当前日期/时间:
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);
}希望这能有所帮助。
麦克
www.MikesKnowledgeBase.com
发布于 2009-12-20 05:13:14
我想你的timeInterval计算是反向的,不是吗?我觉得你想反其道而行之。
double timeInterval = [timeNow timeIntervalSinceDate:timeSaved];https://stackoverflow.com/questions/1934139
复制相似问题