天天看点

NSDate-日期类 OC——第七天(1)

1、总结前面学习的oc中的几种数据类型

nsinteger

nsuinteger

cgfloat

nsstring nsmutablestring

nssarray nsmutablearray

nsdictionary nsmutabledictionary

nsset nsmutableset

2、nsdate 日期类,继承自nsobject ,代表的是一个时间点

nsdate *date = [nsdate date];

nsloge(@“%@“,date);//显示的是格林尼治时间:年-月-日 时:分:秒:+时区

3、typedef double nstimeinterval; nstimeinterval实质是double 类型

nsdate *date1 = [nsdate datewithtimeintervalsincenow:60];

4、昨天的现在时刻

nsdate *date2 = [nsdate datewithtimeintervalsincenow:-(60 * 60 *24)];

明年的这个时刻

nsdate *date3 = [nsdate datewithtimeintervalsincenow:366 *24*60*60];

5、计算给定date对象和当前时间的时间间隔

nstimeinterval time = [date1 timeintervalsincenow];

6、计算当前时间和明年时间

time = [date timeintervalsincenow];

7、时间戳:从1970.1.1 到当前时间的时间间隔就叫时间戳

time = [date timeintervalsince1970];

8、 时间戳对象

nsdate *date4 = [nsdate datewithtimeintervalsince1970:360];

9、获取北京时间,在零时区的基础上加上8个小时,就到了东8区,也就是北京时间

nsdate *date5 = [date datebyaddingtimeinterval:8 *60 *60 ];

例子: 计算一个当前时间和一个固定时间的差值如果差值在60妙以内输出“刚刚”,如果在60秒到3600之前,则输出“xx分钟之前”,若在3600到24 *3600 之内,则输出“xx小时之前”,若再24 * 3600之外,则显示固定时间

nsdate *t2 = [nsdate datewithtimeintervalsincenow:-2*3600];

nstimeinterval time3 = [t2 timeintervalsincenow];

time3 = -time3;

if (time3 <</span> 60) {

nslog(@"刚刚");

}else if (time3 <</span> 3600){

nslog(@"%.2lf分钟之前",time3 / 60);

}else if (time3 <</span> 24 *3600){

nslog(@"%.2lf小时之前",time3 / 3600);

}else{

nslog(@"%@",t2);

}

==============================================================

10、nsdateformatter 日期格式类,主要作用:将nsdate 对象转化为某种格式,然后转化成nsstring 对象

//创建nsdateformatter 对象

nsdateformatter *formatter = [[nsdateformatter alloc]init];

//设定日期格式:yyyy(年) - mm(月) - dd(日) h(小时) m (分钟)s(秒)

[formatter setdateformat:@"yyyy年mm月dd日 hh时mm分ss秒"];

nsdate *date7 = [nsdate date];

11、 nsdate ——>nsstring

stringformatter 会直接加上相聚0时区的时间间隔

nsstring *datestring = [formatter stringfromdate:date7];

nslog(@"%@",datestring);

例子: 练习:将date7显示格式变为:2015年09月07号,11-35-20

nsdateformatter *formatter2 = [[nsdateformatter alloc]init];

[formatter2 setdateformat:@"yyyy年mm月dd号 hh-mm-ss"];

nsstring *datestring2 = [formatter2 stringfromdate:date7];

nslog(@"%@",datestring2);

12、将字符串转化为nsdate 对象

比如:将2015年09月07号 11时40分50秒

准备时间格式对象

nsdateformatter *formatter3 = [[nsdateformatter alloc]init];

[formatter3 setdateformat:@"yyyy年mm月dd号 hh时mm分ss秒"];

//转化字符串对象

nsstring *datestring3 = @"2015年09月07号 11时40分50秒";

//nsstring -->nsdate

nsdate *date8 = [formatter3 datefromstring:datestring3];

nslog(@"%@",date8);

//将转换回来的对象手动加上8小时,回到北京时间

nsdate *date9 = [date8 datebyaddingtimeinterval:8 *60 *60];

nslog(@"%@",date9);

练习:例子: 将字符串转化为nsdate 对象;比如:@"将2015年09月07日 11时40分50秒"

//准备时间格式对象

nsdateformatter *formatter4 = [[nsdateformatter alloc]init];

[formatter4 setdateformat:@"将yyyy年mm月dd日 hh时mm分ss秒"];

nsstring *datestring4 = @"将2015年09月07日 13时28分50秒";

nsdate *date11= [formatter4 datefromstring:datestring4];

nsdate *date10 = [date11 datebyaddingtimeinterval:8*60*60];

nslog(@"%@",date10);

转自:http://blog.csdn.net/qq_31810357