在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。下面来介绍NSDateFormatter的常用属性和API;

 1.常用属性

@property (null_resettable, copy) NSString *dateFormat;//设置输出时间内容:

/*quarter--->季度
公元前/后:AD
年份:2017=2017=17
季度:2=Q2=2nd quarter
月份:4=Apr=April
今天是今年第几周:17
今天是本月第几周:5
今天是今天第几天:114
今天是本月第几天:24
今天是星期几:Monday
星期:2=Mon=Monday
上午/下午:AM
小时:10=10
分钟:30
秒:48
毫秒:918
这一天已过多少毫秒:37848918
时区名称:China Standard Time=China Standard Time 时区编号:+0800
*/
/*
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
MM: 月,显示为1-12
MMM: 月,显示为英文月份简写,如 Jan
MMMM: 月,显示为英文月份全称,如 Janualy
dd: 日,2位数表示,如02
d: 日,1-2位显示,如 2
EEE: 简写星期几,如Sun
EEEE: 全写星期几,如Sunday
aa: 上下午,AM/PM
H: 时,24小时制,0-23
K:时,12小时制,0-11
m: 分,1-2位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
S: 毫秒
Z:GMT
*/

例子:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"\
'公元前/后:'G\
'年份:'u'='yyyy'='yy\
'季度:'q'='qqq'='qqqq\
'月份:'M'='MMM'='MMMM \
'今天是今年第几周:'w \
'今天是本月第几周:'W \
'今天是今年第几天:'D \
'今天是本月第几天:'d \
'今天是星期几:'EEEE \
'星期:'c'='ccc'='cccc \
'上午/下午:'a \
'小时:'h'='H\
'分钟:'m\
'秒:'s \
'毫秒:'SSS\
'这一天已过多少毫秒:'A \
'时区名称:'zzzz'='vvvv \
'时区编号:'Z "]; NSLog(@"%@", [dateFormatter stringFromDate:[NSDate date]]);

//"yyyy年MM月dd日 HH时mm分ss秒 +0800";

//按照什么样的格式来格式化时间

//formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒 Z";

//formatter.dateFormat = @"yyyy/MM/dd HH/mm/ss Z";

//formatter.dateFormat = @"MM-dd-yyyy HH-mm-ss";

@property NSDateFormatterStyle dateStyle;

@property NSDateFormatterStyle timeStyle;

//设置日期对象展示方式,关于样式:

typedef NS_ENUM(NSUInteger, NSDateFormatterStyle) {    // date and time format styles

    NSDateFormatterNoStyle = kCFDateFormatterNoStyle,

    NSDateFormatterShortStyle = kCFDateFormatterShortStyle,

    NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,

    NSDateFormatterLongStyle = kCFDateFormatterLongStyle,

    NSDateFormatterFullStyle = kCFDateFormatterFullStyle

};

 /*

       NSDateFormatterStyle几种取值样式

       NSDateFormatterNoStyle

       例如: (其实就是空白的,不显示) 

       NSDateFormatterShortStyle

       例如:下午7:00 | 15/5/19

       NSDateFormatterMediumStyle

       例如:下午7:00:00 | 2013年5月19日

       NSDateFormatterLongStyle

       例如:GMT +8下午7:00:00 | 2013年5月19日 

       NSDateFormatterFullStyle

       例如:中国标准时间下午7:00:00 | 2013年5月19日 星期日

     */

 

@property (null_resettable, copy) NSLocale *locale;//设置本地的属性,可通过设置本地对象来决定打印出来的语言,比如设置本地标示为zh_CN,那么会用中文打印结果;

 //NSLocale
NSDate *date = [NSDate dateWithTimeIntervalSinceReferenceDate:];
//大陆--简体中文
dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];//简体中文
NSLog(@"%@", [dateFormatter2 stringFromDate:date]);
// US English Locale (en_US)
dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // Jan 2, 2001
// French Locale (fr_FR)
dateFormatter2.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"];
NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // 2 janv. 2001
// Japanese Locale (ja_JP)
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"];
NSLog(@"%@", [dateFormatter2 stringFromDate:date]); // 2001/01/02

  

 

@property (null_resettable, copy) NSTimeZone *timeZone;//时区的设置,我们所处的中国是在东八区。通过系统API调用获取到的时间对象默认是GMT时间,也即是0时区时间,虽然在绝对时间上哪个时区都一样,但是在具体地方的相对时间展示是不同的。因此要具体展示时可以调整相应的时区。关于NSTimeZone的知识介绍,可以参考我的另一篇博文

NSDateFormatter中timezone的使用:

// NSDateFormatter 设置时区
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置时区,设置为 GMT
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:]];

@property (null_resettable, copy) NSCalendar *calendar;;//日历对象,关于NSCalendar的知识介绍,可以参考我的另一篇博文

 2.常用方法

stringFromDate

dateFromString

好了,关于NSDateFormatter的常用知识点了解的差不多了,现在让我们来一段实战代码:

 //        获取时间
NSDate *date = [NSDate date];
NSLog(@"国际标准时间:%@",date);
// 获取系统当前时区
NSTimeZone *zone = [NSTimeZone systemTimeZone];//中国位于东八区、与国际标准时间相差8小时
// 获取当前时区与格林尼治时间的间隔
NSTimeInterval ti = [zone secondsFromGMTForDate:date];
//获取本地时间
NSDate *localDate = [NSDate dateWithTimeIntervalSinceNow:ti];
NSLog(@"当前时区的时间:%@",localDate);
//
/*日期格式转换*/
NSDateFormatter *dfmt = [[NSDateFormatter alloc]init];
//设置日期格式 注意大小写的区分
dfmt.dateFormat = @"yyyy年MM月dd日 HH时:mm分:ss秒";
//按照日期格式 转化为字符串
//GMT时间转换为日期字符串
NSLog(@"日期转字符串2:%@",[dfmt stringFromDate:date]);
//本地时间对象转化内时间字符串
NSString *localDateString = [dfmt stringFromDate:localDate];//调用这个API时,默认将时间对象认为时格林尼日志时间(内部又重新加了格林尼治时间与当前时区的时差8小时,所以要获取当前时间的字符串对象时,不需要再额外转换成当前时区的时间对象)
NSLog(@"日期转字符串:%@",localDateString);
//按照日期格式 将时间字符串转化为时间对象
NSDate *localDate2 = [dfmt dateFromString:localDateString];
NSLog(@"字符串转日期:%@",localDate2);

最新文章

  1. Spring中配置数据源的4种形式
  2. python基础之条件控制与循环
  3. 【Shell脚本】怎样表示一个for循环
  4. Ubuntu 14.04 英文系统 安装中文搜狗输入法
  5. 【Javascript】好用的js弹层插件,layerUI
  6. Versions 出现 SVN Working Copy xxx locked
  7. 2013年9月份第1周51Aspx源码发布详情
  8. Linux命令之at
  9. python--列表的使用
  10. TCP/IP-入门
  11. Qt5官方demo解析集21——Extending QML - Adding Types Example
  12. c++中vector与list的区别
  13. 手势滑动结束 Activity(一)基本功能的实现
  14. NGUI 3.5课程(五岁以下儿童)button-图片切换
  15. CGAffineTransform 放射变换解析 即矩阵变换
  16. jQuery对象的属性操作
  17. 范数 L1 L2
  18. 入门向:南邮CTF_ReadAsm2_WP
  19. DGN格式转化为shp格式 【转】
  20. One Order行项目里Item Category是怎么计算出来的

热门文章

  1. 20145234黄斐《Java程序设计》第八周学习总结
  2. WMI、WQL语言、WQL测试工具wbemtest.exe
  3. 北京Uber优步司机奖励政策(10月5日~10月11日)
  4. UItraIso 制作ubentu 系统失败
  5. JAVA面试中问及HIBERNATE与 MYBATIS的对比
  6. IO 转换流
  7. hdu1455Sticks(经典dfs+剪枝)
  8. pycharm 3.4 亲测可使用到2019年2月的注册码,要用者从速
  9. Linux命令应用大词典-第33章 X Window
  10. Linux命令应用大词典-第22章 GRUB