Swift 3 - 从 String.CharacterView 格式化字符串格式化时间字符串

Posted

技术标签:

【中文标题】Swift 3 - 从 String.CharacterView 格式化字符串格式化时间字符串【英文标题】:Swift 3 - Formatting Time String from String.CharacterView formatted string 【发布时间】:2017-05-22 00:10:18 【问题描述】:

我试图弄清楚如何格式化已经使用 String.CharacterView 格式化的字符串。

代码是:

let formattedDate = arrivalTime.characters.suffix(8) //gets the last 8 characters of a JSON outputted string for the time
 record.time = String(formattedDate) //sets the characters to a string and then sets that equal to the record class variable time, which displays the string in each table view cell
 self.records.append(record)

这会产生类似

的字符串
18:41:21

我想弄清楚的是如何获得像

这样的字符串
6:41pm 

而不是 18:41:21

有人有什么建议吗?谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 components(separatedBy: ":") 解析字符串并将元素映射为整数。然后,您可以使用第一个组件(小时)截断除以 12 的余数来格式化结果字符串,并根据其值有条件地添加 ampm

let time24h = "18:41:21"
let components = time24h.components(separatedBy: ":").flatMapInt($0)
if components.count > 1 
    let time12h =  String(format: "%d:%02d", components[0] % 12, components[1])
        + (components[0] < 12 ? "am" : "pm")  //  "6:41pm"

【讨论】:

以上是关于Swift 3 - 从 String.CharacterView 格式化字符串格式化时间字符串的主要内容,如果未能解决你的问题,请参考以下文章

Alamofire - 从 Swift 2 转换为 Swift 3 时出错

从 Swift 2.3 迁移到 Swift 3 错误消息

从 Swift 2 转换为 Swift 3 时出错

swift 从swift 3中的URL获取原始字符串

swift Swift 3从url获取json序列化

无法转换任何类型?要键入 AnyObject?从 swift 3 转换为 swift 4 时