【问题标题】:CaCurrentMediaTime conversion to it's date and string counterpartsCaCurrentMediaTime 转换为其日期和字符串对应项
【发布时间】:2012-06-29 17:36:52
【问题描述】:

我试图在用户选择按钮时获取确切的时间和日期,然后在他们取消选择按钮时再次获取。

到目前为止,我一直在使用 NSDate dateWithTimeIntervalSince1970。这让我得到毫秒(浮点数),这很容易转换为 NSDate,然后转换为字符串。但是我现在已经多次注意到,与我的 Iphone 4S 上的实时时间相比,这并没有给出绝对时间,最多相差 1 或 2 分钟。

这里使用毫秒浮点数的原因是因为它可以很容易地发送到不同的方法,允许它以 NSNumber 的形式保存到核心数据,从而允许以后轻松计算。

我在这里找到了一篇建议使用 CACurrentMediaTime 的帖子,但我未能成功地将其转换为日期和该日期的字符串:

double CurrentTime = CACurrentMediaTime();

NSDate dateWithTimeIntervalSinceNow 给出了正确的日期,只是模拟器上的时钟比我的 mac 上的实际时间早了大约 35 到 45 分钟。

当前的转换是这样的:

NSDate *conversion = [NSDate dateWithTimeIntervalSince1970:startTimeInMiliSeconds];
NSDateFormatter *formatter;
NSString        *dateString;
formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd-MM-yyyy HH:mm"];
dateString = [formatter stringFromDate:conversion];

有什么想法/参考吗?

【问题讨论】:

    标签: ios datetime core-data nsdate quartz-core


    【解决方案1】:

    为什么不直接将NSDates 保存在Core Data 中并省略整个转换过程呢? NSDates 是核心数据条目的自然数据类型。

    【讨论】:

    • 我一直在考虑它,但现在无论如何我不得不诉诸于此。毫秒的浮点数有一些小错误。我制作了一个循环按钮,以使用增量循环浏览所有条目,以便我可以轻松检查我的核心数据是否有效。但是在每个周期中,它都会重新计算第二次的时间。我将 float 更改为 nsdate,核心数据代码没有更改,现在它可以工作了。很奇怪。现在剩下的就是让 nsdate 的标准 GMT 遵循用户的时区。接受,因为这是要走的路,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-05-21
    • 2020-11-30
    • 2011-06-04
    • 2017-04-24
    • 2015-04-27
    • 2011-11-28
    相关资源
    最近更新 更多