2013年3月18日 星期一

時間格式

在開發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,其他的參數也可以此類推,有興趣的讀者們可以自行實驗。

沒有留言:

張貼留言