幾乎每一個app都會有時間顯示這一功能郊供,但這一功能相對于其他的功能邏輯來說只是九牛一毛峡碉。那如何高效的搞定這一不重要但又必須實現(xiàn)的功能,是你提升逼格的一個基礎點驮审。提高逼格鲫寄,從下面內容開始:
思路
- 創(chuàng)建一個世界管理類:DateFormatter
- 給這個類實現(xiàn)一個單例:sharedFormatter
- 給這個類添加對應時間格式類的屬性:NSDateFormatter()
- 初始化這些格式屬性
- 調用
干活
-
第 1 步:創(chuàng)建一個世界管理類:DateFormatter
class DateFormatter {}
-
第 2 步:給這個類實現(xiàn)一個單例:sharedFormatter
class DateFormatter { // 做成單例 static let sharedFormatter = DateFormatter() }
-
第 3 步:給這個類添加對應時間格式類的屬性:NSDateFormatter()
// 第一步 class DateFormatter { // 第二步 做成單例 static let sharedFormatter = DateFormatter() // 第三步 時間格式屬性:NSDateFormatter 類型 let rfc3339 = NSDateFormatter() // 最全時間格式 ("yyyy-MM-dd'T'HH:mm:ssZZZZZ") let completeDatetime = NSDateFormatter() // 年-月-日 周 時:分:秒("yyyy-MM-dd (EEE) HH:mm") let timeZH = NSDateFormatter() // 中式: 月 日 時 分 上下午("MMMd日 HH:mm a") let timeEN = NSDateFormatter() // 英式:周 月 日,時 分 上下午("EEE, MMM dd, HH:mm a") let timeDate = NSDateFormatter() // 年-月-日("yyyy-MM-dd") let timeHour = NSDateFormatter() // HH:mm("HH:mm") let timeMinute = NSDateFormatter() // HH:mm:ss("HH:mm:ss") }
-
第 4 步:初始化這些格式屬性
// 第一步 class DateFormatter { // 第二步 做成單例 static let sharedFormatter = DateFormatter() // 第三步 時間格式屬性:NSDateFormatter 類型 let rfc3339 = NSDateFormatter() // 最全時間格式 ("yyyy-MM-dd'T'HH:mm:ssZZZZZ") let time = NSDateFormatter() // 年-月-日 周 時:分:秒("yyyy-MM-dd (EEE) HH:mm") let timeZH = NSDateFormatter() // 中式: 月 日 時 分 上下午("MMMd日 HH:mm a") let timeEN = NSDateFormatter() // 英式:周 月 日疯淫,時 分 上下午("EEE, MMM dd, HH:mm a") let timeDate = NSDateFormatter() // 年-月-日("yyyy-MM-dd") let timeHour = NSDateFormatter() // HH:mm("HH:mm") let timeMinute = NSDateFormatter() // HH:mm:ss("HH:mm:ss") // 第四步 初始化 init() { rfc3339.locale = NSLocale(localeIdentifier: "en_US_POSIX") // 時間本地化 rfc3339.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ" // 格式 rfc3339.timeZone = NSTimeZone(forSecondsFromGMT: 0) // 時區(qū) // 不設置時間本地化地来,默認是手機系統(tǒng)的時間顯示 time.dateFormat = "yyyy-MM-dd (EEE) HH:mm" timeZH.locale = NSLocale(localeIdentifier: "zh_CN") timeZH.dateFormat = "MMMd日 HH:mm a" timeEN.locale = NSLocale(localeIdentifier: "en_US") timeEN.dateFormat = "EEE, MMM dd, HH:mm a" timeDate.dateFormat = "yyyy-MM-dd" timeHour.dateFormat = "HH:mm" timeMinute.dateFormat = "HH:mm:ss" // 部分說明:"en_US_POSIX" 與 "en_US" 的選擇 // "en_US_POSIX" 適用的范圍比 "en_US"廣,如果與后臺交互讓"字符串"與"時間"轉換建議選擇"en_US_POSIX" // Apple 官網解釋:“en_US_POSIX” is also invariant in time (if the US, at some point in the future, changes the way it formats dates, “en_US” will change to reflect the new behaviour, but “en_US_POSIX” will not), and between machines (“en_US_POSIX” works the same on iPhone OS as it does on Mac OS X, and as it it does on other platforms). } }
-
第 5 步:應用
// rfc3339 格式 let str = DateFormatter.sharedFormatter.rfc3339.stringFromDate(NSDate()) print(str) // "2016-08-17T14:38:51Z" // time let str = DateFormatter.sharedFormatter.time.stringFromDate(NSDate()) print(str) // "2016-08-17 (Wed) 22:39" // timeZH let str = DateFormatter.sharedFormatter.timeZH.stringFromDate(NSDate()) print(str) // "8月17日 22:39 下午" // timeEN let str = DateFormatter.sharedFormatter.timeEN.stringFromDate(NSDate()) print(str) // "Wed, Aug 17, 22:40 PM" // timeDate let str = DateFormatter.sharedFormatter.timeDate.stringFromDate(NSDate()) print(str) // "2016-08-17" // timeHour let str = DateFormatter.sharedFormatter.timeHour.stringFromDate(NSDate()) print(str) // "22:40" // timeMinute let str = DateFormatter.sharedFormatter.timeMinute.stringFromDate(NSDate()) print(str) // "22:40:58"