en

hi, it seems you are using microsoft internet explorer. it doesn't match web standard and causes problems browsing this site. please please please use mozilla firefox or google chrome instead. thank you!

zh

哦哦!您正在使用Internet Explorer 瀏覽器,它與我們的網頁標準並不相容,可能會導致畫面顯示不正常。
請改用 Mozilla Firefox 或者 Google Chrome 才能正常瀏覽本網站,謝謝!

2.15.2011

關於 NSDateFormatter 的二三事

想要得知有關日期的參數就必須使用 NSDate,由於從 NSDate 得到的資料實在是太多太雜,因此就避免不了使用 NSDateFormatter 來格式化(正規化)這些資訊,接下來我們就來探討,到底有哪些格式化的參數是我們可以用的。

首先,先介紹一下如何從 NSDate 中取得日期的相關料,並進行所謂的格式化,第一步當然是宣告一個 NSDate 型態的變數,並取得當下的日期資料。

NSDate *date = [NSDate date];
接下來就是宣告一個 NSDateFormatter 型態的變數,並做格式化的設定。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"輸入正規化參數 ex:YYYY-MM-d"];

最後,就是將我們所得到的日期資料進行格式化。

NSString *correctDate = [formatter stringFromDate:date];
完成上述步驟之後,字串 correctDate 就存放的格式化好的日期資料,下面我們將列出所有可能的格式化參數以供參考。

與時間相關
參數      代表意義

a        AM/PM (上午/下午)
K        0~11 有0時的12小時制
h        1~12 12小時制
H        0~23 有0時的24小时制
k        1~24 24小時制
m        0~59 分鐘
s        0~59 秒數
s        秒數的個位數
A        0~86399999 一天當中的第幾微秒

v~vvv    一般的GMT時區縮寫
vvvv     一般的GMT時區名稱
z~zzz    具體的GMT時區縮寫
zzzz     具體的GMT時區名稱

與日期相關
參數      代表意義

d        1~31 日期
D        1~366 一年的第幾天
e        1~7 一週的第幾天
c/cc     1~7 一週的第幾天,星期日為第一天

ccc      星期幾縮寫
E~EEE    星期幾縮寫
cccc     星期幾全名
EEEE     星期幾全名

F        1~5 每月第幾周,一周的第一天為周一
w        1~5 每月第幾周,一周的第一天為周日
w        1~53 一年的第幾周,從去年的最後一個周日算起,一周的第一天為周日

L/LL     1~12 第幾個月
M/MM     1~12 第幾個月
LLL      月份縮寫
MMM      月份縮寫
LLLL     月份全名
MMMM     月份全名

q/qq     1~4 第幾季
Q/QQ     1~4 第幾季
qqq      季度縮寫
QQQ      季度縮寫
qqqq     季度全名
QQQQ     季度全名

u        完整年份
y/yyyy   完整年份
Y/YYYY   完整年份,從星期天開始的第一周算起
yy/yyy   兩位數的年份
YY/YYY   兩位數的年份,從星期天開始的第一周算起

特殊用途
參數      代表意義

g        Julian Day Number,從4713 BC一月一日算起
G~GGG    BC/AD 西元前後縮寫
GGGG     西元前後全名

這裡只有列出幾個常用常用參數,還有一些小技巧並沒有詳述,例如今天是 15 號,輸入參數 d 或是 dd 皆可以得到數值 15,可是輸入 ddd 卻會得到數值 015,而輸入 dddd 又會得到 0015,其他的參數也可以此類推,有興趣的讀者們可以自行實驗。






沒有留言:

張貼留言