如何获取 Swift 中给定日期的值?

How to get to values of given date in Swift?

我需要编写一个函数,获取这样的日期:"2017-04-20T12:12:17.004+0200"

我发现这个匹配模式:"yyyy-MM-dd'T'HH:mm:ss.SSSZ"

和函数return 字符串:"It is Monday 20, May, year 2017"。 为此,我必须获取每个值并验证它们。我不知道该怎么做。我知道有类似 components 的东西,但它只与当前日期一起使用,没有给出。有人可以帮帮我吗? 这是我的代码:

var date = "2017-04-20T12:12:17.004+0200"

let dateFormatterGet = DateFormatter()
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"

    if let date = dateFormatterGet.date(from: date) as? Date {
        print(date)
    } else {
        // invalid format
        print("bad format")
    }

请帮忙:(

您可以使用组件,但这不是必需的,因为您可以只使用 DateFormatter。

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")

if let date = dateFormatter.date(from: date) {
    dateFormatter.dateFormat = "'It is' EEEE dd, MMMM, 'year' yyyy"
    // Just for this example we set it English
    // a better solution would be to use the devices local,
    // since this is what the user expecting how the date should be presented. 
    dateFormatter.locale = Locale(identifier: "en")
    let formatted = dateFormatter.string(from: date);

    print(formatted)
} else {
    // invalid format
    print("bad format")
}

我在日期格式化程序中添加了语言环境以确保格式为英文。