使用 Swift 3.0 操控日期
当你在想要 大规模重命名 时,一个附带的挑战就是要确保所有相关的文档都必须同步更新。比如,截至到 2016 年 9 月 20 日,DateFormatter 的文档依旧没有与版本统一,引用的是 Swift 2.3 风格的 API(译者注:现在是 2017年,文档依旧没有更新...)。随着时间的推移,这些疏漏毫无疑问都会被纠正,这里是一些使用 官方文档中当前的示例如下: let dateFormatter = DateFormatter() dateFormatter.dateStyle = .mediumStyle dateFormatter.timeStyle = .noStyle let date = Date(timeIntervalSinceReferenceDate: 118800) // US English Locale (en_US) dateFormatter.locale = Locale(localeIdentifier: "en_US") NSLog("%@",dateFormatter.stringFromDate(date)) // Jan 2,2001 // French Locale (fr_FR) dateFormatter.locale = Locale(localeIdentifier: "fr_FR") NSLog("%@",dateFormatter.stringFromDate(date)) // 2 janv. 2001 // Japanese Locale (ja_JP) dateFormatter.locale = Locale(localeIdentifier: "ja_JP") NSLog("%@",dateFormatter.stringFromDate(date)) // 2001/01/02 在 Swift 3.0 中变为: let dateFormatter = DateFormatter() dateFormatter.dateStyle = .medium dateFormatter.timeStyle = .none 注意 现在看看设置格式化器的环境时发生的改动: // US English Locale (en_US) dateFormatter.locale = Locale(identifier: "en_US") print(dateFormatter.string(from:date)) // Jan 2,2001 // French Locale (fr_FR) dateFormatter.locale = Locale(identifier: "fr_FR") print(dateFormatter.string(from:date)) // 2 janv. 2001 // Japanese Locale (ja_JP) dateFormatter.locale = Locale(identifier: "ja_JP") print(dateFormatter.string(from:date)) // 2001/01/02 再一次,我们看到了从 继续用一个 let RFC3339DateFormatter = DateFormatter() RFC3339DateFormatter.locale = Locale(localeIdentifier: "en_US_POSIX") RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" RFC3339DateFormatter.timeZone = TimeZone(forSecondsFromGMT: 0) let string = "1996-12-19T16:39:57-08:00" let date = RFC3339DateFormatter.dateFromString(string) 为了减少啰嗦和不必要的词汇,得到了下面的写法: let RFC3339DateFormatter = DateFormatter() RFC3339DateFormatter.locale = Locale(identifier: "en_US_POSIX") RFC3339DateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" RFC3339DateFormatter.timeZone = TimeZone(secondsFromGMT: 0) let string = "1996-12-19T16:39:57-08:00" let date = RFC3339DateFormatter.date(from:string)
经验法则从 Swift 2 转换到 Swift 3 时,一个通用法则是:去除多余的单词。如果你之前习惯了写 愉快地 Swift 吧!
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |