原本以為獲取日期和時間的方法很簡單,沒想到它是如此深奧,我查詢一些跟NSDate相關的API用法,只要掌握幾個簡單的原則,就可運用自如。像是由 NSDate 轉換為 NSString,和由 NSString 轉換為 NSDate。
直接看程式碼,就知道怎麼使用。關鍵在於NSDateFormatter,是它讓NSDate和NSString可以換轉自如。
//
// main.m
// HappyMan's Program - NSDate
// Xcode 4.5
// Created by ShengWen on 13/01/04.
// Copyright (c) 2013年 ShengWen. All rights reserved.
// https://cg2010studio.wordpress.com/
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
// 從現在開始 100000 秒後的日期
NSDate *today = [NSDate dateWithTimeIntervalSinceNow:100000];
[dateFormat setDateStyle:NSDateFormatterFullStyle];
NSString *dateString = [dateFormat stringFromDate:today];
NSLog(@"FullStyle~Date: %@", dateString);
[dateFormat setDateStyle:NSDateFormatterLongStyle];
dateString = [dateFormat stringFromDate:today];
NSLog(@"LongStyle~Date: %@", dateString);
[dateFormat setDateStyle:NSDateFormatterMediumStyle];
dateString = [dateFormat stringFromDate:today];
NSLog(@"MediumStyle~Date: %@", dateString);
[dateFormat setDateStyle:NSDateFormatterShortStyle];
dateString = [dateFormat stringFromDate:today];
NSLog(@"ShortStyle~Date: %@", dateString);
[dateFormat setDateStyle:NSDateFormatterNoStyle];
dateString = [dateFormat stringFromDate:today];
NSLog(@"NoStyle~Date: %@", dateString);
NSDate *nowDate = [NSDate date];
[dateFormat setDateFormat:@"MMMM d EEEE, YYYY"];
NSString *nowDateString = [dateFormat stringFromDate:nowDate];
NSLog(@"%@",nowDateString);
NSString *theEndOfTheWorldDateStr = @"20121221";
// Convert string to date object
[dateFormat setDateFormat:@"yyyyMMdd"];
NSDate *theEndOfTheWorlDate = [dateFormat dateFromString:theEndOfTheWorldDateStr];
NSLog(@"theEndOfTheWorldDate: %@",theEndOfTheWorlDate);
// Convert date object to desired output format
[dateFormat setDateFormat:@"EEEE MMMM d, YYYY"];
theEndOfTheWorldDateStr = [dateFormat stringFromDate:theEndOfTheWorlDate];
NSLog(@"theEndOfTheWorldDateStr: %@",theEndOfTheWorldDateStr);
return 0;
}
最後兩個轉換,string轉date object和date object轉string,可以期望的格式轉換。
執行結果:
2013-01-04 19:38:28.612 HappyMan’s First Program[3553:403] FullStyle~Date: 2013年1月5日星期六
2013-01-04 19:38:28.613 HappyMan’s First Program[3553:403] LongStyle~Date: 2013年1月5日
2013-01-04 19:38:28.615 HappyMan’s First Program[3553:403] MediumStyle~Date: 2013/1/5
2013-01-04 19:38:28.617 HappyMan’s First Program[3553:403] ShortStyle~Date: 13/1/5
2013-01-04 19:38:28.617 HappyMan’s First Program[3553:403] NoStyle~Date:
2013-01-04 19:38:28.618 HappyMan’s First Program[3553:403] 1月 4 星期五, 2013
2013-01-04 19:38:28.619 HappyMan’s First Program[3553:403] theEndOfTheWorldDate: 2012-12-20 16:00:00 +0000
2013-01-04 19:38:28.620 HappyMan’s First Program[3553:403] theEndOfTheWorldDateStr: 星期五 12月 21, 2012
至於常用的參數可參考下表~
與時間相關
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 一天當中的第幾微秒
與日期相關
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 月份全名 u 完整年份 y/yyyy 完整年份 Y/YYYY 完整年份,從星期天開始的第一周算起 yy/yyy 兩位數的年份 YY/YYY 兩位數的年份,從星期天開始的第一周算起
閒聊
還滿多可以嘗試,有空來玩玩,其餘的就請高人指點迷津囉~
參考:
隨意留個言吧:)~