轉載地址:http://www.2cto.com/kf/201312/267257.html
一、通過自帶的日曆得到年月日、時間、以及星期
1
2
3
4
5
6
7
8
9
10
11
12
13
|
NSCalendar
*calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate
*now; NSDateComponents
*comps = [[NSDateComponents alloc] init]; NSInteger
unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekdayCalendarUnit |
NSHourCalendarUnit
| NSMinuteCalendarUnit | NSSecondCalendarUnit; now=[NSDate
date]; comps
= [calendar components:unitFlags fromDate:now]; week
= [comps weekday]; month
= [comps month]; day
= [comps day]; hour
= [comps hour]; min
= [comps minute]; sec
= [comps second]; |
二、世界標準時間UTC /GMT 轉爲當前系統時區對應的時間
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
-
(NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate { //設置源日期時區 NSTimeZone*
sourceTimeZone = [NSTimeZone timeZoneWithAbbreviation: @UTC ]; //或GMT //設置轉換後的目標日期時區 NSTimeZone*
destinationTimeZone = [NSTimeZone localTimeZone]; //得到源日期與世界標準時間的偏移量 NSInteger
sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:anyDate]; //目標日期與本地時區的偏移量 NSInteger
destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:anyDate]; //得到時間偏移量的差值 NSTimeInterval
interval = destinationGMTOffset - sourceGMTOffset; //轉爲現在時間 NSDate*
destinationDateNow = [[[NSDate alloc] initWithTimeInterval:interval sinceDate:anyDate] autorelease]; return
destinationDateNow; } |
三、NSString格式轉化爲NSDate
1
2
3
4
5
6
7
8
|
-
(NSDate *)stringToDate:(NSString *)strdate { NSDateFormatter
*dateFormatter = [[NSDateFormatteralloc] init]; [dateFormatter
setDateFormat: @yyyy -MM-dd
HH:mm:ss]; //
NSString的時間格式 NSDate
*retdate = [dateFormatter dateFromString:strdate]; [dateFormatter
release]; return
retdate; } |
1
2
3
4
5
6
7
8
|
-
(NSString *)dateToString:(NSDate *)date { NSDateFormatter
*dateFormatter = [[NSDateFormatteralloc] init]; [dateFormatter
setDateFormat: @yyyy -MM-dd
HH:mm:ss]; NSString
*strDate = [dateFormatter stringFromDate:date]; [dateFormatter
release]; return
strDate; } |
五、將本地日期字符串轉爲UTC日期字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//本地日期格式:2013-08-03
12:53:51 //可自行指定輸入輸出格式 -(NSString
*)getUTCFormateLocalDate:(NSString *)localDate { NSDateFormatter
*dateFormatter = [[NSDateFormatter alloc] init]; //輸入格式 [dateFormatter
setDateFormat: @yyyy -MM-dd
HH:mm:ss]; NSDate
*dateFormatted = [dateFormatter dateFromString:localDate]; NSTimeZone
*timeZone = [NSTimeZone timeZoneWithName: @UTC ]; [dateFormatter
setTimeZone:timeZone]; //輸出格式 [dateFormatter
setDateFormat: @yyyy -MM-dd 'T' HH:mm:ssZ]; NSString
*dateString = [dateFormatter stringFromDate:dateFormatted]; [dateFormatter
release]; return
dateString; } |
六、將UTC日期字符串轉爲本地時間字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//輸入的UTC日期格式2013-08-03T04:53:51+0000 -(NSString
*)getLocalDateFormateUTCDate:(NSString *)utcDate { NSDateFormatter
*dateFormatter = [[NSDateFormatter alloc] init]; //輸入格式 [dateFormatter
setDateFormat: @yyyy -MM-dd 'T' HH:mm:ssZ]; NSTimeZone
*localTimeZone = [NSTimeZone localTimeZone]; [dateFormatter
setTimeZone:localTimeZone]; NSDate
*dateFormatted = [dateFormatter dateFromString:utcDate]; //輸出格式 [dateFormatter
setDateFormat: @yyyy -MM-dd
HH:mm:ss]; NSString
*dateString = [dateFormatter stringFromDate:dateFormatted]; [dateFormatter
release]; return
dateString; } |
七、iOS開發之格式化日期時間
字符說明
(:)時間分隔符。在某些區域設置中,可以使用其他字符表示時間分隔符。時間分隔符在格式化時間值時分隔小時、分鐘和秒。格式化輸出中用作時間分隔符的實際字符由您的應用程序的當前區域性值確定。
(/)日期分隔符。在某些區域設置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值時分隔日、月和年。格式化輸出中用作日期分隔符的實際字符由您的應用程序的當前區域性確定。
(%)用於表明不論尾隨什麼字母,隨後字符都應該以單字母格式讀取。也用於表明單字母格式應以用戶定義格式讀取。有關更多詳細信息,請參見下面的內容。
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