我是iOS开发新手,作为一名Android开发人员,我曾经使用过一个对象,该对象使用给定时区(来自Joda-Time库)保存日期时间。如何在iOS中保存带时区的日期时间?
在阅读关于日期和时间的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中完成这项工作?
编辑:想象一下,我有一个带有标题和开始时间的类Event。标题是一个字符串,开始时间应该是什么?
您声明*“没有时区的时间没有任何意义”*。这显然是错误的。当然这是有道理的。 '日期'是一个时间点。如果我说“现在”,这是一个对世界上每个人都一样的时间点。直到有人想知道“我的时区现在几点钟了?”时区才是无关紧要的。“然后,只需将该“Date”格式化为具有给定时区的“String”即可。 – rmaddy
@rmaddy我可能不得不不同意你的看法。想象一下,有人给你这次注释“1970-12-12 11:40:30”。你不知道什么时候开始,这是不确定的。你所描述的是事件发生后的秒数,对于所有的情况都是一样的。你必须给出一些起点,这是时区的作用。 – Exprove
但字符串“1970-12-12 11:40:30”不是“日期”。这是一个字符串。您将根据特定的时区将该字符串转换为“Date”。一旦你有了'Date',你就可以存储它。稍后,您可以检索它,并且可以将该“Date”转换为您想要的任何时区的字符串。这才是重点。 Date对象没有特定的时区,并且不需要一个。 – rmaddy