iOS 日期處理 - 解析日期
要從一個字串中解析得到準確的時間,必須要指定正確的格式字串
,以及對應的時區標示
1、日期格式
1.年
y
將年份 (0-9) 顯示為不帶前置字元為零的數字
yy
以帶前置字元為零的兩位元字格式顯示年份
yyy
以四位元字格式顯示年份
yyyy
以四位元字格式顯示年份
2.月
M
將月份顯示為不帶前置字元為零的數字(如一月表示為 1)
MM
將月份顯示為帶前置字元為零的數字(例如 01/12/01)
MMM
將月份顯示為縮寫形式(例如 Jan)
MMMM
將月份顯示為完整月份名(例如 January)
- 一月 Jan January
- 二月 Feb February
- 三月 Mar March
- 四月 Apr April
- 五月 May May
- 六月 Jun June
- 七月 Jul July
- 八月 Aug August
- 九月 Sep September
- 十月 Oct October
- 十一月 Nov November
- 十二月 Dec December
3.日
d
將日顯示為不帶前置字元為零的數字(如 1)
dd
將日顯示為帶前置字元為零的數字(如 01)
4.星期
EEE
將日顯示為縮寫形式(例如 Sun)
EEEE
將日顯示為全名(例如 Sunday)
- 星期一 Mon Monday
- 星期二 Tue Tuesday
- 星期三 Wed Wednesday
- 星期四 Thu Thursday
- 星期五 Fri Friday
- 星期六 Sat Saturday
- 星期天 Sun Sunday
5.小時
h
使用 12 小時制將小時顯示為不帶前置字元為零的數字(例如 1:15:15 PM)
hh
使用 12 小時制將小時顯示為帶前置字元為零的數字(例如 01:15:15 PM)
H
使用 24 小時制將小時顯示為不帶前置字元為零的數字(例如 1:15:15)
HH
使用 24 小時制將小時顯示為帶前置字元為零的數字(例如 01:15:15)
6.分鐘
m
將分鐘顯示為不帶前置字元為零的數字(例如 12:1:15)
mm
將分鐘顯示為帶前置字元為零的數字(例如 12:01:15)
7.秒
s
將秒顯示為不帶前置字元為零的數字(例如 12:15:5)
ss
將秒顯示為帶前置字元為零的數字(例如 12:15:05)
f
顯示秒的小數部分
ff
將精確顯示到百分之一秒
ffff
將精確顯示到萬分之一秒
- 使用者定義格式中最多可使用七個 f 符號
8.上午,下午
t
使用 12 小時制
- 中午之前任一小時顯示大寫的 A
- 中午到 11:59 PM 之間的任一小時顯示大寫的 P
tt
對於使用 12 小時制的地區設定
- 中午之前任一小時顯示大寫的 AM
- 中午到 11:59 PM 之間的任一小時顯示大寫的 PM
- 對於使用 24 小時制的地區設定,不顯示任何字元
9.時區
z
顯示不帶前置字元為零的時區位移量
zz
顯示帶前置字元為零的時區位移量(例如 -08)
zzz
顯示完整的時區位移量(例如 -0800)
10. 範例
/// 根據指定的日期文字建立日期/// dateSring 日期文字/// 日期文字格式為:"Sun May 24 13:59:03 +0800 2015"class func createDate(dateSring: String) -> NSDate? {let df = NSDateFormatter()df.locale = NSLocale(localeIdentifier: "ch")df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"return df.dateFromString(dateSring)}
2、為NSDate 建立分類
/// 從字串中解析到準確時間// 參數 dateString 為時間字串 formatString 為時間字串對應的格式class func getDate(dateString: String, formatString: String) -> NSDate? {// dateFormatter// 1. 執行個體化let df = NSDateFormatter()// 2. 要指定日期的地區,Xcode 6.3 beta 還不需要,地區需要指定英語// 注意:在真機調試的時候,一定要指定地區,否則以前版本同樣無法轉換df.locale = NSLocale(localeIdentifier: "en")// 3. 設定日期格式df.dateFormat = formatString// 4. 產生日期return df.dateFromString(dateString)}
3、日期處理類 NSCalendar
。。。