我有以下 12 小时格式时间字符串:
let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";
并尝试从这些数据中获取日期进行比较,如下所示:
let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")
使用此扩展:
extension String
{
func date(format:String) -> Date?
{
let formatter = DateFormatter()
formatter.dateFormat = format
formatter.timeZone = NSTimeZone.local
return formatter .date(from: self)
}
}
当我打印 openTime 和 closeTime 时,我得到的时间值不正确:
print(openTime) // 2000-01-01 00:00:00 +0000
print(closeTime) // 2000-01-01 11:00:00 +0000
为什么会这样?我认为它与时区有关,所以我访问NSDateFormatter return wrong date + Swift ,但对我来说没有任何作用。如果有人有解决方案,请帮助我。谢谢!
最佳答案
我检查了 swift 3 和 Xcode 8,进行了一些小更改,请检查其工作情况
let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";
let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")
print(openTime)
print(closeTime)
并更改扩展名
extension String{
func date(format:String) -> Date?
{
let formatter = DateFormatter()
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
formatter.dateFormat = format
//formatter.timeZone = TimeZone.current //or autoupdatingCurrent
return formatter .date(from: self)
}}
关于swift - 12 小时格式时间字符串中的日期时间不正确 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41178408/