【发布时间】:2017-09-02 17:43:11
【问题描述】:
我有以下问题。假设我从服务器接收到一些包含日期时间的字符串,格式如下:
yyyy-MM-dd'T'HH:mm:ssxxxx
这是一个服务器日期时间,我想按原样在应用程序中显示它。所以如果我收到日期时间:
2017-04-07T10:29:23+ 02:00
表示服务器上是10:29:23 (08:29:23 UTC)
我想在应用程序中显示为:
04.07.2017 10:29:23
但是每当我尝试将字符串转换为 NSDate 时,我都会将日期转换为 UTC,这是不需要的,因为我丢失了有关服务器时区的信息。我现在使用以下代码:
let formatter = NSDateFormatter()
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssxxxx"
let date = formatter.dateFromString(dateString)
如何在 Swift (2.3) 中实现这一点?
提前致谢。
【问题讨论】:
-
您的代码是正确的。如果您
print日期,您将获得 UTC。在操场上试试。两个注意事项:xxxx可以替换为Z,并且在日期字符串中,加号/减号和时区值之间不能有空格。 -
感谢您的回复。是的,我知道它会给我一个 UTC,但正如我上面写的,我不想要这个。我想显示服务器日期时间,因为我收到了。所以例如如果服务器上的时间是 10:00(UTC 时间 8:00),我也想在应用程序中显示 10:00(独立于应用程序时区)。
-
如果您想忽略时区,您必须从日期字符串中去除时区信息(例如使用
replaceOccurrencesOfString和RegularExpression选项)。 -
老实说,我正在考虑它,但我认为可能有一些很好的解决方案。还有其他想法吗?
标签: ios swift nsdate nsdateformatter swift2.3