我如何将 (2020-02-21 06:07:21 +0000) 转换为“21 Feb 2021 12:00 AM”?
How can i Convert (2020-02-21 06:07:21 +0000) to "21 Feb 2021 12:00 AM"?
我正在使用设备时间来获取日期组件。这适用于 12 小时 formate,但如果用户将设备时间更改为 24 小时,则会显示错误的计算。使用以下方法转换但它总是 return nil.
let dateAsString = "\(Date())"
let df = DateFormatter()
df.dateFormat = "yyyy-mm-dd HH:mm:ss zzz"
let date = df.date(from: dateAsString)
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: date!)
print(time12)
我刚刚在下面尝试过它在这两种情况下都可以正常工作。使用 AM
或 PM
或 24Format
并且如果您在 formatter.dateFormat = "dd MMM yyyy HH:mm a"
中删除 a
将为您提供 24 格式。即使我在我的代码中使用它。
let someDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = "dd MMM yyyy HH:mm a"
let someDateTime = formatter.string(from: someDate)
print(someDateTime)
打印:
21 Feb 2020 09:35 AM
试试,
let str = "2020-02-21 06:07:21 +0000"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-mm-dd hh:mm:ss zzz"
if let date = formatter.date(from: str) {
formatter.dateFormat = "dd MMM yyyy hh:mm a"
let formattedDate = formatter.string(from: date)
print(formattedDate)
}
Swift-这个回答对我有帮助
swift - how to convert date from am/pm to 24 hour format
// 在这里也张贴我的作品。
- 我在 24 小时内获得了设备合成。
- 我在 12H 内需要。
- 所以我只是使用此代码片段将日期对象转换为所需的甲酸盐。
let df = DateFormatter()
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: Date())
print(time12)
所以,您遇到的核心问题是 yyyy-mm-dd
使用的 mm
是分钟而不是 MM
是月。
所以,如果相反,您尝试了类似...
let dateAsString = "\(Date())"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
let date = df.date(from: dateAsString)
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: date!)
它会导致
21 Feb 2020 6:00 PM
现在,问题是,你可以简单地做
let df = DateFormatter()
df.dateFormat = "d MMM yyyy h:mm a"
df.string(from: Date())
得到相同的结果。
请记住,Date
本身没有 "format" 的概念,超出其 "debug" 输出提供的内容,因此您无法更改 Date
的格式,相反,您使用格式化程序 "represent" 以某种人类可读的形式 Date
的值。
试试这个:
let date : "2021-01-20T21:40:59.416Z"
func setDate(date: String) -> String {
var interval: Double = 0
let convertedDate = date.components(separatedBy: ":")
for (index, part) in convertedDate.reversed().enumerated() {
interval += (Double(part) ?? 0) * pow(Double(60), Double(index))
}
let date = Date(timeIntervalSinceNow: interval)
let formatter = Foundation.DateFormatter()
formatter.dateFormat = "LLLL dd, HH:mm at"
return formatter.string(from: date)}
这将return一个这种格式的日期
--> “1 月 21 日,05:30 上午”
我正在使用设备时间来获取日期组件。这适用于 12 小时 formate,但如果用户将设备时间更改为 24 小时,则会显示错误的计算。使用以下方法转换但它总是 return nil.
let dateAsString = "\(Date())"
let df = DateFormatter()
df.dateFormat = "yyyy-mm-dd HH:mm:ss zzz"
let date = df.date(from: dateAsString)
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: date!)
print(time12)
我刚刚在下面尝试过它在这两种情况下都可以正常工作。使用 AM
或 PM
或 24Format
并且如果您在 formatter.dateFormat = "dd MMM yyyy HH:mm a"
中删除 a
将为您提供 24 格式。即使我在我的代码中使用它。
let someDate = Date()
let formatter = DateFormatter()
formatter.dateFormat = "dd MMM yyyy HH:mm a"
let someDateTime = formatter.string(from: someDate)
print(someDateTime)
打印:
21 Feb 2020 09:35 AM
试试,
let str = "2020-02-21 06:07:21 +0000"
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-mm-dd hh:mm:ss zzz"
if let date = formatter.date(from: str) {
formatter.dateFormat = "dd MMM yyyy hh:mm a"
let formattedDate = formatter.string(from: date)
print(formattedDate)
}
Swift-这个回答对我有帮助
swift - how to convert date from am/pm to 24 hour format
// 在这里也张贴我的作品。
- 我在 24 小时内获得了设备合成。
- 我在 12H 内需要。
- 所以我只是使用此代码片段将日期对象转换为所需的甲酸盐。
let df = DateFormatter() df.dateFormat = "d MMM yyyy h:mm a" let time12 = df.string(from: Date()) print(time12)
所以,您遇到的核心问题是 yyyy-mm-dd
使用的 mm
是分钟而不是 MM
是月。
所以,如果相反,您尝试了类似...
let dateAsString = "\(Date())"
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
let date = df.date(from: dateAsString)
df.dateFormat = "d MMM yyyy h:mm a"
let time12 = df.string(from: date!)
它会导致
21 Feb 2020 6:00 PM
现在,问题是,你可以简单地做
let df = DateFormatter()
df.dateFormat = "d MMM yyyy h:mm a"
df.string(from: Date())
得到相同的结果。
请记住,Date
本身没有 "format" 的概念,超出其 "debug" 输出提供的内容,因此您无法更改 Date
的格式,相反,您使用格式化程序 "represent" 以某种人类可读的形式 Date
的值。
试试这个:
let date : "2021-01-20T21:40:59.416Z"
func setDate(date: String) -> String {
var interval: Double = 0
let convertedDate = date.components(separatedBy: ":")
for (index, part) in convertedDate.reversed().enumerated() {
interval += (Double(part) ?? 0) * pow(Double(60), Double(index))
}
let date = Date(timeIntervalSinceNow: interval)
let formatter = Foundation.DateFormatter()
formatter.dateFormat = "LLLL dd, HH:mm at"
return formatter.string(from: date)}
这将return一个这种格式的日期 --> “1 月 21 日,05:30 上午”