DateFormatter不适用于Swift 3

时间:2017-04-03 16:43:24

标签: swift date swift3 formatting nsdateformatter

我正在尝试将此日期“07:05:45 PM”转换为“19:05:45”,此代码不起作用,我没有找到关于日期的其他问题的解决方案,代码:< / p>

 Import Foundation
 let string = "07:05:45 PM"
 let dateFormatter = DateFormatter ()
 dateFormatter.locale = Locale (identifier: "en_US_POSIX")
 dateFormatter.dateFormat = "hh:mm a"
 let date = dateFormatter.date (from: string)
 print (date)

我试过

 dateFormatter.dateFormat = "hh:mm:ss"
 dateFormatter.dateFormat = "hh:mm:ss a"
 dateFormatter.dateFormat = "hh:mm"

我删除了“PM”并尝试:

 dateFormatter.dateFormat = "hh:mm" 
 dateFormatter.dateFormat = "hh:mm:ss" // that code is the only who worked, but doesn't solves the format problem

2 个答案:

答案 0 :(得分:0)

您需要使用最后使用“a”的DateFormatter进行读取,然后不要只使用print(date)打印日期,您需要使用另一个使用24小时时钟格式的DateFormatter( “HH”)并且没有AM / PM。

答案 1 :(得分:0)

你应该这样做:

let givenString = "07:05:45 PM"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "hh:mm:ss a"

if let date = dateFormatter.date (from: givenString) {
    dateFormatter.dateFormat = "HH:mm:ss"

    let desiredFormattedString = dateFormatter.string(from: date) // "19:05:45"
}

简单地说,您的给定日期格式为“hh:mm:ss a”,所需的日期格式为“HH:mm:ss”。通过设置适当的格式(使用dateFormatter),desiredFormattedString字符串应包含所需的格式化日期。

请注意,要获取24小时时钟约定的格式,您应该将时间设为HH,显然 - hh代表12小时时钟约定。