天天看點

iOS中時間格式的轉化(NSString/NSDate)

一般開發中最常使用的是NSString和NSDate之間的轉化, 我們使用NSDateFormatter的倆個方法:

- (NSString *)stringFromDate:(NSDate *)date; // NSDate轉NSString
  - (NSDate *)dateFromString:(NSString *)string; // NSString轉NSDate
           

下面上代碼:

// 将其他格式的時間字元串轉換成我們熟悉的時間格式
    NSString *timeString = @"Mon Jul 15 13:38:09 +0800 2015";
    NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
    fmt.dateFormat = @"EEE MMM dd HH:mm:ss Z yyyy";
    NSDate *date = [fmt dateFromString:timeString];
    
    fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
    NSString *resultStr = [fmt stringFromDate:date];
           

常用的時間字元說明: (摘錄自 奔放小青年 的部落格)

(:)

時間分隔符。在某些區域設定中,可以使用其他字元表示時間分隔符。時間分隔符在格式化時間值時分隔小時、分鐘和秒。格式化輸出中用作時間分隔符的實際字元由您的應用程式的目前區域性值确定。

(/)

日期分隔符。在某些區域設定中,可以使用其他字元表示日期分隔符。日期分隔符在格式化日期值時分隔日、月和年。格式化輸出中用作日期分隔符的實際字元由您的應用程式的目前區域性确定。

(%)

用于表明不論尾随什麼字母,随後字元都應該以單字母格式讀取。也用于表明單字母格式應以使用者定義格式讀取。有關更多詳細資訊,請參見下面的内容。

d

将日顯示為不帶前導零的數字(如 1)。如果這是使用者定義的數字格式中的唯一字元,請使用 %d。

dd

将日顯示為帶前導零的數字(如 01)。

EEE

将日顯示為縮寫形式(例如 Sun)。

EEEE

将日顯示為全名(例如 Sunday)。

M

将月份顯示為不帶前導零的數字(如一月表示為 1)。如果這是使用者定義的數字格式中的唯一字元,請使用 %M。

MM

将月份顯示為帶前導零的數字(例如 01/12/01)。

MMM

将月份顯示為縮寫形式(例如 Jan)。

MMMM

将月份顯示為完整月份名(例如 January)。

gg

顯示時代/紀元字元串(例如 A.D.)

h

使用 12 小時制将小時顯示為不帶前導零的數字(例如 1:15:15 PM)。如果這是使用者定義的數字格式中的唯一字元,請使用 %h。

hh

使用 12 小時制将小時顯示為帶前導零的數字(例如 01:15:15 PM)。

H

使用 24 小時制将小時顯示為不帶前導零的數字(例如 1:15:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %H。

HH

使用 24 小時制将小時顯示為帶前導零的數字(例如 01:15:15)。

m

将分鐘顯示為不帶前導零的數字(例如 12:1:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %m。

mm

将分鐘顯示為帶前導零的數字(例如 12:01:15)。

s

将秒顯示為不帶前導零的數字(例如 12:15:5)。如果這是使用者定義的數字格式中的唯一字元,請使用 %s。

ss

将秒顯示為帶前導零的數字(例如 12:15:05)。

f

顯示秒的小數部分。例如,ff 将精确顯示到百分之一秒,而 ffff 将精确顯示到萬分之一秒。使用者定義格式中最多可使用七個 f 符号。如果這是使用者定義的數字格式中的唯一字元,請使用 %f。

t

使用 12 小時制,并對中午之前的任一小時顯示大寫的 A,對中午到 11:59 P.M 之間的任一小時顯示大寫的 P。如果這是使用者定義的數字格式中的唯一字元,請使用 %t。

tt

對于使用 12 小時制的區域設定,對中午之前任一小時顯示大寫的 AM,對中午到 11:59 P.M 之間的任一小時顯示大寫的 PM。

對于使用 24 小時制的區域設定,不顯示任何字元。

y

将年份 (0-9) 顯示為不帶前導零的數字。如果這是使用者定義的數字格式中的唯一字元,請使用 %y。

yy

以帶前導零的兩位數字格式顯示年份(如果适用)。

yyy

以四位數字格式顯示年份。

yyyy

以四位數字格式顯示年份。

z

顯示不帶前導零的時區偏移量(如 -8)。如果這是使用者定義的數字格式中的唯一字元,請使用 %z。

zz

顯示帶前導零的時區偏移量(例如 -08)

zzz

顯示完整的時區偏移量(例如 -08:00)

格式顯示

M/d/yy

12/7/58

d-MMM

7-Dec

d-MMMM-yy

7-December-58

d MMMM

7 December

MMMM yy

December 58

hh:mm tt

08:50 PM

h:mm:ss t

8:50:35 P

H:mm

20:50

H:mm:ss

20:50:35

M/d/yyyy H:mm

12/7/1958 20:50