事情是这样的。 我的 iPhone 格式为上午/下午格式,iPhone 语言为西类牙语 (MX)。 当我询问日期时,我得到类似 2018-03-21 5:14:59 a 的信息。米。 +0000 是日期类型,然后我尝试将其转换为 24 小时格式的字符串,我得到类似 2018-03-20 23:14:59 的字符串类型,但是当我尝试将该字符串转换为日期,我再次以 am/pm 格式获得相同的日期 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
最佳答案
all I want is convert my am/pm date to 24hours date NOT STRING
这不是 Date
的工作方式。
Date values represent a time interval relative to an absolute reference date.
Date
只是自引用日期以来的时间段的容器,它本身不携带任何格式信息。
let dateFromString = dateFormatter.date(from: stringDate)
print("dateFromString: \(dateFromString!)\n\n\n")
只是将 stringDate
(在您的示例中为 2018-03-20 23:14:59
)转换回 Date
对象和 print
正在使用 Date
的 description
实现来为您提供有关其当前值的信息
所以,如果我们改为添加...
print("dateFromString: \(dateFormatter.string(from: dateFromString!))\n\n\n")
它将打印 2018-03-21 16:44:17
你最好的选择是不在乎。只需将值放在 Date
对象中并将其格式化为 String
当您需要将其显示给用户或需要格式化时 - 这就是格式化程序的意义所在
关于swift - 如何将日期从上午/下午转换为 24 小时格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49398852/