首页 > 解决方案 > 如何在没有时区的情况下解析 ISO8061 至今

问题描述

我从服务器接收 JSON 格式的数据,其中一个字段date包含年、月和日:

"date": "2018-03-11",

我不需要确切的时间,只需要一天和一个月。我使用了带有语言环境的 DateFormatter,但我仍然收到来自 UTC 时区的日期。我住在 CET (+1)/ CEST (+2) 时区,所以我想知道解析这个日期的最佳方法是什么。当我"2018-03-11"从服务器收到时,我想得到:

date = 2018-03-11 00:00:00

日期格式化程序:

private let dateFormatter: DateFormatter = {
       let dateFormatter = DateFormatter()
        dateFormatter.calendar = Calendar(identifier: Calendar.Identifier.iso8601)
        dateFormatter.locale = Locale(identifier: "pl_PL")

        dateFormatter.dateFormat = "yyyy-MM-dd"
        return dateFormatter
    }()

标签: jsonswifttimezonedateformatter

解决方案


只需使用

    dateFormatter.locale = Locale.current
    dateFormatter.timeZone = TimeZone.init(identifier: "UTC")

let dateFormatter: DateFormatter = {
            let dateFormatter = DateFormatter()
            dateFormatter.locale = Locale.current
            dateFormatter.timeZone = TimeZone.init(identifier: "UTC")
            dateFormatter.dateFormat = "yyyy-MM-dd"
            return dateFormatter
        }()

    print(dateFormatter.date(from: "2018-03-11"))

推荐阅读