代码之家  ›  专栏  ›  技术社区  ›  pnizzle

DateTime2格式转换为Swift Date

  •  1
  • pnizzle  · 技术社区  · 2 年前

    我有一个来自后端的日期字符串“2022-08-16T13:44:11.8743234”。日期格式化和转换是这本书中最古老的技能,但我不明白为什么我无法在Swift iOS中将该字符串转换为date对象。我只是用我指定的任何源格式得到nil。

    private func StringToDate(dateString: String) -> Date?
    {
        let formatter = DateFormatter()
        formatter.dateFormat = "YYYY-MM-DDTHH:mm:ss.[nnnnnnn]"
        let date = formatter.date(from: dateString)
        return date //this is nil every time
    }
    

    DateTime2是普通C#DateTime的一个更精确的SQL Server扩展,因此日期字符串在秒后有7位小数。

    我做错了什么?

    1 回复  |  直到 2 年前
        1
  •  2
  •   udi    2 年前

    在您的代码中,处理毫秒部分的方式是错误的。我们通常使用 .SSS 持续毫秒。看看 here 它显示了与日期格式相关的所有符号。

    let dateFormatter = DateFormatter()
    dateFormatter.locale     = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
    let date = dateFormatter.date(from: "2022-08-16T13:44:11.8743234")
    print(date)
    

    除此之外,您正在使用 DD 一天。 DD 指一年中的某一天(数字)。所以应该是 dd 。同样的情况也适用于本年度。