微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 swift / IOS 中将 am/pm 符号转换为当前本地化

如何解决如何在 swift / IOS 中将 am/pm 符号转换为当前本地化

我需要将 am/pm 符号格式转换为相应的语言环境。这是代码片段

let formatter = DateFormatter()
formatter.dateFormat = "h:mm aa"
formatter.timeZone = TimeZone(abbreviation: "UTC")
return formatter

即使我尝试将代码更改为他的但无法成功。

let formatter = DateFormatter()
let locale = Locale.autoupdatingCurrent
formatter.locale = locale

并且还使用区域设置标识符

let locale = Locale(identifier: "de-DE")
formatter.locale = locale

但没有运气,请提供宝贵的意见,并提前非常感谢。

解决方法

不清楚您要做什么。您定义了一个 DateFormatter,它将 Date 对象与包含 AM/PM 的时间字符串相互转换。如果您想获取一个包含带有 AM/PM 后缀的时间的日期字符串并将其转换为 24 小时制,您需要 2 个单独的 DateFormatter,或者您需要在转换之间更改它们的格式字符串。

考虑这个 Mac 游乐场代码:

import Cocoa

let  formatterWithAmPM: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "MM/dd/yyyy h:mm aa"
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    return formatter
}()

let formatterWith24HourTime: DateFormatter = {
    let formatter = DateFormatter()
    formatter.dateFormat = "MM/dd/yyyy HH:mm"
    formatter.timeZone = TimeZone(abbreviation: "UTC")
    return formatter
}()


let startingDateString = "06/15/2021 02:26 PM"
if let date = formatterWithAmPM.date(from: startingDateString) {
    print("Date string '\(startingDateString) in 24 hour time = '\(formatterWith24HourTime.string(from:date))'")
}

输出:

Date string '06/15/2021 02:26 PM in 24 hour time = '06/15/2021 14:26'

(我在日期格式中添加了月/日/年,以便我可以指定完整的日期和时间。没有日期的时间是不完整的。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。