查找自上次用户更新iOS以来的时间

时间:2012-02-11 01:31:10

标签: ios time nsdate

我正在构建一个iOS应用程序,用户可以输入进入当地酒吧/餐厅的预计等待时间。为了提高可靠性,我希望能够跟踪用户何时输入信息,以及该时间到xml文件,然后能够将文件解析为表视图(使用先前的更新)以供其他人查看。表格单元格将显示位置名称,大致等待时间以及输入等待时间的时间。

基本上我想弄清楚的是如何在用户更改cel时格式化NSDate(我希望它看起来像时间,例如晚上10:30)。如果有时间,我如何找到当前时间和给定时间的差异?

由于

1 个答案:

答案 0 :(得分:3)

那里有几个问题,其中没有一个与标题真正匹配,但这里是; - )

获取当前时间/日期:

NSDate *now = [NSDate date];

为了保存这个,我建议你将它存储在NSUserDefaults中:

[[NSUserDefaults standardUserDefaults] setObject:now forKey:@"startTime"];
[[NSUserDefaults standardUserDefaults] synchronize];

您可以稍后使用

重新加载日期
NSDate *theDate = [[NSUserDefaults standardUserDefaults] objectForKey:@"startTime"];

您可以使用NSDateFormatter将日期格式化为人类可读的内容,如下所示:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"HH:mm"];
NSString *time = [formatter stringFromDate:theDate]; // returns something like @"10:30"

您可以使用以下函数找到两个日期之间的差异:

NSTimeInterval differenceInSeconds = [date1 timeIntervalSinceDate:date2];

时间间隔以秒为单位,因此要将其转换为有用时间,您可以除以60得到分钟,再除以60得到小时等等。所以将其转换为人类可读时间:

NSTimeInterval differenceInSeconds = ...

NSInteger totalSeconds = floor(differenceInSeconds);
NSInteger seconds = totalSeconds % 60;
NSInteger minutes = totalSeconds / 60;
NSString *waitTime = [NSString strinWithFormat:@"%i minutes, %i seconds", minutes, seconds];