ios - swift 。为自定义区域设置设置特定时间格式(12/24 小时)

标签 ios swift nsdateformatter nslocale

我想根据用户首选项中的“24 小时时间”选项从 DateFormatter 获取 12 小时或 24 小时格式的时间。

如果我像这样设置“24-Hour-Time”=“on”和 DateFormatter:

    let formatter = DateFormatter()
    let locale = Locale(identifier: "en_US")
    print(locale)                            // "en_US (fixed)\n"
    formatter.locale = locale 
    formatter.dateStyle = .none
    formatter.timeStyle = .short

    formatter.string(from: Date()) // "2:54 PM" (not "14:54")

但是如果我设置:

    let locale = Locale.current   // "en_US (current)\n"

而不是

    let locale = Locale(identifier: "en_US") // "en_US (fixed)\n"

结果将是

formatter.string(from: Date()) // "14:54"

如何创建自定义区域设置 12 或 24 小时格式。

最佳答案

//MARK:- 使用它将 24 小时时间格式转换为 12 小时格式字符串

 func TwelveHourFormateFrom24Hours(time : String)->String
    {
        let Time = time.components(separatedBy: ".")
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "H:mm:ss"

        if let inDate = dateFormatter.date(from: Time[0])
        {
            dateFormatter.dateFormat = "h:mm a"
            dateFormatter.timeZone = TimeZone.current
            let outTime = dateFormatter.string(from: inDate)
            print("in \(time)")
            print("out \(outTime)")
            return outTime
        }
        return time
    }

//MARK:- 24 小时格式字符串

 func TwentyFourHourFormate(time : String)->String
    {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "h:mm a"

        if let inDate = dateFormatter.date(from: time)
        {
            dateFormatter.dateFormat = "H:mm:ss.sss"
            let outTime = dateFormatter.string(from: inDate)
            print("in \(time)")
            print("out \(outTime)")
            return outTime
        }
        return time
    }

关于ios - swift 。为自定义区域设置设置特定时间格式(12/24 小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51948378/

相关文章:

iphone - NSDateFormatter 字符串

ios - 将 (Date + Time) 从 NSString 转换为 NSDate 并添加一些时间

ios - 您好,我正在使用 Quickblox API 在我的应用程序中聊天。但我有与密码长度相关的问题

ios - 在没有唯一识别 ID 的情况下禁止社交 iOS 应用程序中的问题用户?

ios - 在 Swift 中,如何让其他应用在我的应用打开时继续播放音频?

swift - Realm swift2 安装失败,消息为 "No version of Xcode found that supports Swift 2.0"

ios - 为什么我的 TextView 充满了不需要的空间?代码中没有额外的行。截图

ios - 从每个月的第 1 天开始倒计时

ios - 如何在 UITableViewDataSource 中重新加载数据

ios - NSDateFormatter 无法格式化以前存储的日期