获取日期格式|斯威夫特| iOS版

时间:2018-01-16 23:08:01

标签: ios swift date nsdateformatter

根据要求,我的API可能会在" 2018-01-01"或" 01-01-2018"或" 2018-01-01T00:00:00"格式

如何查看日期格式?

例如:我的API响应代码" 2018-01-01"应该归还给我" yyyy-MM-dd"等等。

我可以通过检查我的字符长度并相应地指定日期格式来做到这一点。但我觉得这不是正确的方法。

2 个答案:

答案 0 :(得分:2)

您只需要定义日期格式并尝试每种格式。其中一个会成功。只需确保所有日期字符串都来自同一时区(我想它们都是UTC)并且不要忘记将日期格式化程序区域设置为" en_US_POSIX"使用固定格式的日期时:

let dateStrings = ["2018-01-01", "01-01-2018", "2018-01-01T00:00:00"]
let dateFormats = ["yyyy-MM-dd'T'HH:mm:ss", "yyyy-MM-dd", "MM-dd-yyyy"]
let formatter = DateFormatter()
formatter.calendar = Calendar(identifier: .iso8601)
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0)
var dates: [Date] = []
for dateString in dateStrings {
    for dateFormat in dateFormats {
        formatter.dateFormat = dateFormat
        if let date = formatter.date(from: dateString) {
            dates.append(date)
            print("dateFormat:", dateFormat)
            print("date:", date)
            break
        }
    }
}

这将打印

  

dateFormat:yyyy-MM-dd

     

日期:2018-01-01 00:00:00 +0000

     

dateFormat:MM-dd-yyyy

     

日期:2018-01-01 00:00:00 +0000

     

dateFormat:yyyy-MM-dd' T' HH:mm:ss

     

日期:2018-01-01 00:00:00 +0000

答案 1 :(得分:0)

在API中使用含糊不清的日期格式存在风险。但是如果你坚持这个,你可以制作多个DateFormatters并为每个特定格式配置(通过相应地设置它们的dateFormat)并尝试依次使用这些格式转换字符串。一旦取得成功,您就知道自己采用的格式(dateFormat)。