gpt4 book ai didi

objective-c - 在核心数据中搜索 NSDate 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:49:39 24 4
gpt4 key购买 nike

我有一个应用程序可以从时间戳为 UTC 的服务器中提取数据。我的应用程序必须根据当前本地时间在屏幕上显示内容。我遇到的问题如下

如果我这样做

// the Y M D is fine but time is -8 behind so showing 03:34 instead of 11:34.
NSDate *today = [[NSDate alloc] init];

所以当我这样做的时候

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(start <= %@) AND (room == %@) AND (end >= %@)", today, room, today];

今天插入 NSPredicate 时我没有得到正确的结果是“2012-08-10 03:34:00”但应该是“2012-08-10 11:34:00”

我不能只将时间增加 8 小时,因为该应用可能会在不同的时区使用。我唯一的想法是让设备时区计算出它比 UTC 晚多少小时,然后使用 NSDateComponents 添加/减去这些小时。有没有更简单的方法,只需在 CoreData 中为 NSPredicate 提取设置一些内容?

最佳答案

[[NSDate alloc] init] 返回当前的 UTC 日期和时间。

如果您将日期存储到数据库或服务器中,作为最佳实践,您应该存储 UTC 时间,并且仅当您在 UI 中显示时才始终转换为“本地”格式。

如果您需要在您的 UI 中显示它,您应该使用 NSDateFormatter 以在本地时间正确显示它。您可以使用 NSTimeZone 对象来确定本地时区,并使用适当的时区设置您的 NSDateFormatter。

即使您创建一个由“本地配置”的 NSDateFormatter 格式化的 NSDate,基础日期/时间仍然是 UTC。

如果您遵循这些原则,您的谓词中的日期就不会有任何问题

关于objective-c - 在核心数据中搜索 NSDate 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11911750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com