在開發iOS程序時,有時候需要將時間格式調整成自己希望的格式,這個時候我們可以用NSDateFormatter類來處理。
例如:
//實例化一個NSDateFormatter對像
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設定時間格式,這裡可以設置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以獲取系統當前時間
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//輸出格式為:2010-10-27 10:22:13
NSLog(@”%@”,currentDateStr);
//alloc後對不使用的對像別忘了release
[dateFormatter release];
//另一個blog
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *locationString=[formatter stringFromDate: [NSDate date]];
//獲取當前時間作為productId
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"hhmmss"];
NSString *locationString=[formatter stringFromDate: [NSDate date]];
downloadInfo.productId = locationString;
[formatter release];
/******************************************************************************
函數名稱 : getDate
函數描述 : 獲取當前日期時間
輸入參數 : N/A
輸出參數 : N/A
返回值 : NSString 當前時間
備注 :
******************************************************************************/
-(NSString *)getDate
{
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd EEEE HH:mm:ss a"];
NSString *locationString=[formatter stringFromDate: [NSDate date]];
[formatter release];
return locationString;
}
//大寫的H日期格式將默認為24小時制,小寫的h日期格式將默認為12小時
//不需要特別設置,只需要在dataFormat裡設置類似"yyyy-MMM-dd"這樣的格式就可以了
//日期格式如下:
//y 年 Year 1996; 96
//M 年中的月份 Month July; Jul; 07
//w 年中的周數 Number 27
//W 月份中的周數 Number 2
//D 年中的天數 Number 189
//d 月份中的天數 Number 10
//F 月份中的星期 Number 2
//E 星期中的天數 Text Tuesday; Tue
//a Am/pm 標記 Text PM
//H 一天中的小時數(0-23) Number 0
//k 一天中的小時數(1-24) Number 24
//K am/pm 中的小時數(0-11) Number 0
//h am/pm 中的小時數(1-12) Number 12
//m 小時中的分鐘數 Number 30
//s 分鐘中的秒數 Number 55
//S 毫秒數 Number 978
//z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
//Z 時區 RFC 822 time zone -0800
http://furnacedigital.blogspot.tw/2011/02/nsdateformatter.html
想要得知有關日期的參數就必須使用 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,其他的參數也可以此類推,有興趣的讀者們可以自行實驗。
沒有留言:
張貼留言