【发布时间】:2017-10-28 22:45:04
【问题描述】:
我是 iOS 开发的新手,作为一名 Android 开发人员,我习惯使用一个对象来保存具有给定时区的日期时间(来自 Joda-Time 库)。
在阅读了有关日期和时间的 iOS 文档 (https://developer.apple.com/documentation/foundation/dates_and_times) 之后,我仍然对应该使用哪个类来保存日期时间存有疑问。给定Date/NSDate 类描述“一个特定的时间点,独立于任何日历或时区。”它似乎非常无用,因为它与时区无关,没有时区的时间没有任何意义,因为它没有任何上下文。
我真正的问题(TL;DR):
我有一个数据库,其中日期时间以 UTC 格式存储,例如 "yyyy-MM-dd hh:mm:ss"。我想用某种 DateFormatter(格式为“yyyy-MM-dd hh:mm:ss”的字符串)加上一个时区(UTC)来初始化一个对象,以便轻松转换为我想要的任何时区(显示给用户的默认时区时间)。如何在 iOS 中完成此操作?
编辑:假设我有一个带有标题和开始时间的类事件。标题是String,应该是什么开始时间?
【问题讨论】:
-
您声明“没有时区的时间没有任何意义”。那是完全错误的。当然,这是有道理的。
Date是一个时间点。如果我说“现在”,那是世界上每个人都一样的时间点。时区是无关紧要的,直到有人想知道“我的时区中的‘现在’是什么时候?”。然后,您只需将Date格式化为具有给定时区的String。 -
@rmaddy 我可能不得不不同意你的观点。想象一下,有人给你这个时间注释“1970-12-12 11:40:30”。你不知道它是什么时候开始的,它是不确定的。您所描述的是事件发生后经过的秒数,这对于所有上下文都是相同的。您必须给出一些起点,这就是时区的作用。
-
但是字符串“1970-12-12 11:40:30”不是
Date。这是一个字符串。您将根据特定时区将该字符串转换为Date。一旦你有了Date,你就可以存储它。稍后您检索它,您可以将Date再次转换为您想要的任何时区的字符串。这才是重点。Date对象没有特定的时区,也不需要。 -
@Exprove 不,不要认为
Date是UTC。这不是任何时区。这只是一个时间点。期间。 -
@LeoDabus 在内部,
Date表示为自某个纪元以来的时间间隔,这并不意味着Date可以被认为是 UTC 时间。