这是事情。 我的上传/下午格式的iPhone和西班牙语的iPhone语言(MX)。 当我要求约会的时候,我会得到像2018-03-21 5:14:59这样的东西。米+0000,它是一个日期类型,然后我尝试将其转换为24小时格式的字符串,我得到类似2018-03-20 23:14:59的东西,它是一个字符串类型,但是当我尝试将该字符串转换为日期,我再次以am / pm格式获得相同的日期2018-03-21 5:14:59 a。米+0000 我不知道还能做什么,我想要的只是将我的上午/下午日期转换为24小时日期而不是STRING。 请帮帮我。 这是我在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
答案 0 :(得分:3)
我想要的只是将我的上午/下午日期转换为24小时日期而不是STRING
那不是Date
的工作方式。
日期值表示相对于绝对参考日期的时间间隔。
Date
只是自参考日期以来一段时间内的容器,它本身不带任何格式化信息。
let dateFromString = dateFormatter.date(from: stringDate)
print("dateFromString: \(dateFromString!)\n\n\n")
只是将stringDate
(示例中为2018-03-20 23:14:59
)转换回Date
对象,而print
正在使用Date
s description
实施,为您提供有关它的当前价值的信息
所以,如果我们改为添加......
print("dateFromString: \(dateFormatter.string(from: dateFromString!))\n\n\n")
会打印2018-03-21 16:44:17
你最好的选择是不要在意。只需在Date
对象中携带值并将其格式化为String
,当您需要将其显示给用户或以其他方式需要格式化时 - 这是格式化程序的重点