NSDateFormatter代表一个日期格式器,它的功能就是完成NSDate与NSString之间的转换。
使用NSDateFormatter完成NSDate与NSString之间转换的步骤如下:
1. 创建一个NSDateFormatter对象
2. 调用NSDateFormatter的setDateStyle:,setTimeStyle:方法设置格式化日期,时间的风格。
其中,日期,时间风格支持如下几个枚举值。
NSDateFormatterNoStyle:不显示日期,时间的风格。
NSDateFormatterShortStyle:显示短的日期,时间风格
NSDateFormatterMediumStyle:显示中等的日期,时间风格
NSDateFormatterLongStyle:显示长的日期,时间风格
NSDateFormatterFullStyle:显示完整的日期,时间风格
如果打算使用自定义的格式模版,可以调用NSDateFormatter的setDateFormatter:方法设置日期,时间的模版即可。
3.如果需要将NSDate转换为NSString,调用NSDateFormatter的stringFromDate:方法执行格式化即可;
如果需要将NSString转换为NSDate,调用NSDateFormatter的dateFromString:方法执行格式化即可。
如下程序示范来NSDateFormatter的功能和用法.
- #import <Foundation/Foundation.h>
-
- int main(int argc, const charchar * argv[])
- {
-
- @autoreleasepool {
-
-
- NSDate* dt = [NSDate dateWithTimeIntervalSince1970:20*366*24*3600];
-
- NSLocale* locales[] = {[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"],
- [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]};
- NSDateFormatter* df[8];
-
- for (int i=0; i<2; i++) {
- df[i * 4] = [[NSDateFormatter alloc] init];
-
- [df[i * 4] setDateStyle:NSDateFormatterShortStyle];
- [df[i * 4] setTimeStyle:NSDateFormatterShortStyle];
-
- [df[i * 4] setLocale:locales[i]];
-
- df[i * 4 + 1] = [[NSDateFormatter alloc] init];
-
- [df[i * 4 + 1] setDateStyle:NSDateFormatterMediumStyle];
- [df[i * 4 + 1] setTimeStyle:NSDateFormatterMediumStyle];
-
- [df[i * 4 + 1] setLocale:locales[i]];
-
- df[i * 4 + 2] = [[NSDateFormatter alloc] init];
-
- [df[i * 4 + 2] setDateStyle:NSDateFormatterLongStyle];
- [df[i * 4 + 2] setTimeStyle:NSDateFormatterLongStyle];
-
- [df[i * 4 + 2] setLocale:locales[i]];
-
- df[i * 4 + 3] = [[NSDateFormatter alloc] init];
-
- [df[i * 4 + 3] setDateStyle:NSDateFormatterFullStyle];
- [df[i * 4 + 3] setTimeStyle:NSDateFormatterFullStyle];
-
- [df[i * 4 + 3] setLocale:locales[i]];
- }
-
- for (int i=0; i<2; i++) {
- switch (i) {
- case 0:
- NSLog(@"----------中国日期格式----------");
- break;
- case 1:
- NSLog(@"----------美国日期格式----------");
- break;
-
- }
- NSLog(@"SHORT格式的日期格式:%@",[df[i * 4] stringFromDate:dt]);
- NSLog(@"MEDIUM格式的日期格式:%@",[df[i * 4 + 1] stringFromDate:dt]);
- NSLog(@"LONG格式的日期格式:%@",[df[i * 4 + 2] stringFromDate:dt]);
- NSLog(@"FULL格式的日期格式:%@",[df[i * 4 + 3] stringFromDate:dt]);
- }
-
- NSDateFormatter* df2 = [[NSDateFormatter alloc] init];
-
- [df2 setDateFormat:@"公元yyyy年MM月DD日 HH时mm分"];
-
- NSLog(@"%@",[df2 stringFromDate:dt]);
-
- NSString* dateStr = @"2013-03-12";
- NSDateFormatter* df3 = [[NSDateFormatter alloc] init];
-
- [df3 setDateFormat:@"yyyy-MM-dd"];
-
- NSDate* date2 = [df3 dateFromString:dateStr];
- NSLog(@"%@",date2);
-
-
-
-
-
- }
- return 0;
- }
其打印日志如下:
2014-08-26 22:36:42.465 NSDateFormatterTest[466:303] ----------中国日期格式----------
2014-08-26 22:36:42.467 NSDateFormatterTest[466:303] SHORT格式的日期格式:90-1-16 上午8:00
2014-08-26 22:36:42.467 NSDateFormatterTest[466:303] MEDIUM格式的日期格式:1990年1月16日 上午8:00:00
2014-08-26 22:36:42.468 NSDateFormatterTest[466:303] LONG格式的日期格式:1990年1月16日 GMT+8上午8:00:00
2014-08-26 22:36:42.469 NSDateFormatterTest[466:303] FULL格式的日期格式:1990年1月16日 星期二 中国标准时间上午8:00:00
2014-08-26 22:36:42.469 NSDateFormatterTest[466:303] ----------美国日期格式----------
2014-08-26 22:36:42.470 NSDateFormatterTest[466:303] SHORT格式的日期格式:1/16/90, 8:00 AM
2014-08-26 22:36:42.470 NSDateFormatterTest[466:303] MEDIUM格式的日期格式:Jan 16, 1990, 8:00:00 AM
2014-08-26 22:36:42.471 NSDateFormatterTest[466:303] LONG格式的日期格式:January 16, 1990 at 8:00:00 AM GMT+8
2014-08-26 22:36:42.471 NSDateFormatterTest[466:303] FULL格式的日期格式:Tuesday, January 16, 1990 at 8:00:00 AM China Standard Time
2014-08-26 22:36:42.475 NSDateFormatterTest[466:303] 公元1990年01月16日 08时00分
2014-08-26 22:36:42.476 NSDateFormatterTest[466:303] 2013-03-11 16:00:00 +0000
Program ended with exit code: 0