Giáo dục > đào tạo trực tuyến > E-learning > Lập trình di động > Lập trình IOS

Lập trình IOS: Cách chuyển NSDate sang NSString - Ảnh 1 : Khoá học lập trình IOS cơ bản

Giới thiệu một số phương pháp chuyển đổi từ NSDate sang NSString và ngược lại

1.NSDateFormator

Đây là phương pháp cơ bản nhất thường được dùng để chuyển đổi qua lại giữ NSDate và NSString.

Một ví dụ trên mạng:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd"];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSDate *now = [[NSDate alloc] init];
NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
NSLog(@"n"
"theDate: |%@| n"
"theTime: |%@| n"
, theDate, theTime); lap trinh ios
NSDate *date = [dateFormat dateFromString:@"1986-03-26"];
NSLog(@"date from string: %@", date);
/*
//Neu project không hỗ trợ ARC thì uncomment block này nhé :D
[dateFormat release];
[timeFormat release];
[now release];
*/

Kết quả :

 
1
2
3
theDate: |2013-11-14|
theTime: |13:16:47|
1986-03-25 17:00:00 +0000

 

Tham khảo Apple document để có thêm nhiều lựa chọn có sẵn đối với NSDateFormator

2. Sử dụng thư viện hàm của ngôn ngữ C: strftime

 
1
2
3
4
5
6
7
#import
time_t currentTime = time(NULL);
struct tm timeStruct;
localtime_r(&currentTime, &timeStruct);
char buffer[20];
strftime(buffer, 20, "%d-%m-%Y %H:%M", &timeStruct);
NSLog(@"date string: %s", buffer);

 

Kết quả:

 
1
date string: 14-11-2013 13:25

 

Tham khảo các tùy chọn sau:

 

specifier Replaced by Example
%a Abbreviated weekday name * Thu
%A Full weekday name * Thursday
%b Abbreviated month name * Aug
%B Full month name * August
%c Date and time representation * Thu Aug 23 14:55:02 2001
%C Year divided by 100 and truncated to integer (00-99) 20
%d Day of the month, zero-padded (01-31) 23
%D ShortMM/DD/YYdate, equivalent to%m/%d/%y 08/23/01
%e Day of the month, space-padded (1-31) 23
%F ShortYYYY-MM-DDdate, equivalent to%Y-%m-%d 2001-08-23
%g Week-based year, last two digits (00-99) 01
%G Week-based year lap trinh android
2001
%h Abbreviated month name * (same as%b) Aug
%H Hour in 24h format (00-23) 14
%I Hour in 12h format (01-12) 02
%j Day of the year (001-366) 235
%m Month as a decimal number (01-12) 08
%M Minute (00-59) 55
%n New-line character ('n')  
%p AM or PM designation PM
%r 12-hour clock time * 02:55:02 pm
%R 24-hourHH:MMtime, equivalent to%H:%M 14:55
%S Second (00-61) 02
%t Horizontal-tab character ('t')  
%T ISO 8601 time format (HH:MM:SS), equivalent to%H:%M:%S 14:55:02
%u ISO 8601 weekday as number with Monday as1(1-7) 4
%U Week number with the first Sunday as the first day of week one (00-53) 33
%V ISO 8601 week number (00-53) 34
%w Weekday as a decimal number with Sunday as0(0-6) 4
%W Week number with the first Monday as the first day of week one (00-53) 34
%x Date representation * 08/23/01
%X Time representation * 14:55:02
%y Year, last two digits (00-99) 01
%Y Year 2001
%z ISO 8601 offset from UTC in timezone (1 minute=1, 1 hour=100)
If timezone cannot be termined, no characters
+100
%Z Timezone name or abbreviation *
If timezone cannot be termined, no characters
CDT
%% A%sign %

Bonus: Dùng opensource: Thật ra nó cũng dùng NSDateFormator như ở phương phaosp1. Nhưng nó tiện thì xài thôi. Tác giả đã add category mới cho NSDate rất tiện lợi, bạn có thể add thêm hoặc bổ sung vào cho phù hợp với nhu cầu của mình. Nguồn của opensource: https://github.com/erica/NSDate-Extensions