【发布时间】:2018-03-21 05:32:24
【问题描述】:
事情就是这样。 我的 iPhone 是 am/pm 格式,iPhone 语言是西班牙语 (MX)。 当我询问日期时,我得到类似 2018-03-21 5:14:59 a 的信息。米。 +0000 它是一个日期类型,然后我尝试将其转换为 24 小时格式的字符串,我得到类似 2018-03-20 23:14:59 的内容,它是一个字符串类型,但是当我尝试将该字符串转换为日期,我再次以上午/下午格式获得相同的日期 2018-03-21 5:14:59 a。米。 +0000 我不知道还能做什么,我想要的只是将我的上午/下午日期转换为 24 小时日期而不是字符串。 请帮帮我。 这是我在 Swift 4 中的代码
let todayDate = Date()
print("todayDate: \(todayDate)")
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd' 'HH:mm:ss"
let stringDate = dateFormatter.string(from: todayDate)
print("stringDate: \(stringDate)")
let dateFromString = dateFormatter.date(from: stringDate)
print("dateFromString: \(dateFromString!)\n\n\n")
这是我的控制台结果
todayDate: 2018-03-21 5:14:59 a. m. +0000
stringDate: 2018-03-20 23:14:59
dateFromString: 2018-03-21 5:14:59 a. m. +0000
【问题讨论】:
-
Date对象没有格式的内部概念,它只是从锚点开始的一段时间的容器。dateFromString只是打印了description的Dates 实现,您需要将Date值再次格式化回String -
你想为哪个国家做?你的国家是什么?
-
没有理由去做你想做的事。您的
Date对象就可以了。当您在Date对象上使用print时,不要担心它的外观。仅当您真正希望使用DateFormatter将日期显示为String时才担心输出。 -
我在数据库(领域)中有一个 initDate 和一个 finishDate,我试图验证 todayDate 是否在该范围内。但是领域中的日期采用 24 小时格式,而当 todayDate 采用 AM/PM 格式时,我无法比较这些日期。当 todatDate 是 24 小时格式时,一切都很好。
标签: swift date dateformatter