Foundation框架中的《时间日期》
1、NSDate(日期与时间)
dateWithTimeIntervalSinceNow 距离现在时间的时间戳
dateWithTimeIntervalSince1970 距离1970的时间戳
比较函数
earlierDate 得到两个日期中较早的日期
laterDate 得到两个日期中较晚的日期
compare 得到两个日期中的排序枚举
NSLocale 本地市区
pragma +++++++++++++++++++++++++++获得时间+++++++++++++++++++++++++++++
//获取当前时间
NSDate *date = [NSDate date];
NSLog(@"date:%@",date);
//date:2017-01-13 03:03:38 +0000
//获取一天后的时间
NSDate *afterDate = [NSDate dateWithTimeIntervalSinceNow:3600*24];
NSLog(@"afterDate:%@",afterDate);
// afterDate:2017-01-14 03:03:38 +0000
//获取距离1970.1.1,20年后的日期
NSDate *after20Date = [NSDate dateWithTimeIntervalSince1970:3600*24*366*20];
NSLog(@"after20Date:%@",after20Date);
// after20Date:1990-01-16 00:00:00 +0000
//获取系统当前的本地化时间
NSLocale *cn = [NSLocale currentLocale];
NSLog(@"中国的时间戳字符串:%@",[date descriptionWithLocale:cn]);
// 中国的时间戳字符串:2017年1月13日 星期五 中国标准时间 11:03:38
pragma +++++++++++++++++++++++++++时间比较函数+++++++++++++++++++++++++++++
NSDate *earlierDate = [date earlierDate:afterDate];
NSLog(@"更早的日期:%@",earlierDate);
// 更早的日期:2017-01-13 03:03:38 +0000
NSDate *laterDate = [date laterDate:afterDate];
NSLog(@"更晚的日期:%@",laterDate);
// 更晚的日期:2017-01-14 03:03:38 +0000
switch ([date compare:afterDate]) {
case NSOrderedAscending:
//升序
NSLog(@"更晚的日期:%@",afterDate);
break;
case NSOrderedSame:
//相等
NSLog(@"相同的日期:");
break;
case NSOrderedDescending:
//降序
NSLog(@"降序更早的日期:%@",date);
break;
default:
break;
}
//更晚的日期:2017-01-14 03:03:38 +0000
pragma +++++++++++++++++++++++++++获取时间差+++++++++++++++++++++++++++++
NSLog(@"两个时间差了%g秒",[date timeIntervalSinceDate:afterDate]);
// 两个时间差了-86400秒
NSLog(@"afterDate与现在差了%g秒",[afterDate timeIntervalSinceNow]);
// afterDate与现在差了86400秒
2、NSDateFormatter(日期格式器)
主要功能:实现NSDate与NSString之间的转换
NSDateFormatter方法
1、dateFromString 得到NSDate对象
2、stringFromDate 得到string对象
NSDateFormatter设置
3、setDateStyle 设置日期格式
4、setTimeStyle 设置时间格式
5、setDateFormat 自定义format格式
//获取当前时间
NSDate *date = [NSDate date];
NSLog(@"date:%@",date);
//date:2017-01-13 03:03:38 +0000
//创建两个NSLocale对象(中国地区,美国地区)
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]; //17/1/13 或 1/13/17
[df[i*4] setTimeStyle:NSDateFormatterShortStyle]; //下午3:27 或 3:27 PM
//设置NSLocale
[df[i*4] setLocale:locales[i]];
//设置日期与时间风格
df[i*4+1] = [[NSDateFormatter alloc]init];
[df[i*4+1] setDateStyle:NSDateFormatterMediumStyle]; //2017年1月13日
[df[i*4+1] setTimeStyle:NSDateFormatterMediumStyle]; //下午3:27:31
//设置NSLocale
[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];
//设置NSLocale
[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];
//设置NSLocale
[df[i*4+3] setLocale:locales[i]];
}
for (int i = 0; i<2; i++) {
switch (i) {
case 0:
NSLog(@"----------------中国日期格式-----------------");
break;
case 1:
NSLog(@"----------------美国日期格式-----------------");
break;
default:
break;
}
NSLog(@"short日期格式:%@",[df[i*4] stringFromDate:date]);
NSLog(@"medium日期格式:%@",[df[i*4+1] stringFromDate:date]);
NSLog(@"long日期格式:%@",[df[i*4+2] stringFromDate:date]);
NSLog(@"full日期格式:%@",[df[i*4+3] stringFromDate:date]);
}
NSDateFormatter *df2 = [[NSDateFormatter alloc]init];
[df2 setDateFormat:@"公元yyyy年MM月DD日 HH时mm分"];
//执行格式化
[df2 stringFromDate:date];
NSString *dateStr = @"2016-12-23";
NSDateFormatter *df3 = [[NSDateFormatter alloc]init];
[df3 setDateFormat:@"yyyy-MM-dd"];
NSDate *date2 = [df3 dateFromString:dateStr];
NSLog(@"%@",date2);
/*
----------------中国日期格式-----------------
2017-01-13 15:06:03.693 nsdateFile[17136:1077196] short日期格式:17/1/13 下午3:06
2017-01-13 15:06:03.694 nsdateFile[17136:1077196] medium日期格式:2017年1月13日 下午3:06:03
2017-01-13 15:06:03.694 nsdateFile[17136:1077196] long日期格式:2017年1月13日 GMT+8 下午3:06:03
2017-01-13 15:06:03.694 nsdateFile[17136:1077196] full日期格式:2017年1月13日 星期五 中国标准时间 下午3:06:03
2017-01-13 15:06:03.694 nsdateFile[17136:1077196]
----------------美国日期格式-----------------
2017-01-13 15:06:03.695 nsdateFile[17136:1077196] short日期格式:1/13/17, 3:06 PM
2017-01-13 15:06:03.695 nsdateFile[17136:1077196] medium日期格式:Jan 13, 2017, 3:06:03 PM
2017-01-13 15:06:03.695 nsdateFile[17136:1077196] long日期格式:January 13, 2017 at 3:06:03 PM GMT+8
2017-01-13 15:06:03.696 nsdateFile[17136:1077196] full日期格式:Friday, January 13, 2017 at 3:06:03 PM China Standard Time
2017-01-13 15:06:03.697 nsdateFile[17136:1077196] 2016-12-22 16:00:00 +0000
*/
}
3、日历(NSCalendar)与日期组件(NSDateComponents)
主要功能:实现NSDate的年、月、日提取与组建
日历类:提取年、月、日
NSDate * date = [NSDate date];
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; // 指定日历的算法 NSCalendarIdentifierGregorian,NSGregorianCalendar
// NSDateComponent 可以获得日期的详细信息,即日期的组成
NSDateComponents *comps = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond|NSCalendarUnitWeekday fromDate:date];
NSLog(@"年 = year = %ld",comps.year);
NSLog(@"月 = month = %ld",comps.month);
NSLog(@"日 = day = %ld",comps.day);
NSLog(@"时 = hour = %ld",comps.hour);
NSLog(@"分 = minute = %ld",comps.minute);
NSLog(@"秒 = second = %ld",comps.second);
NSLog(@"星期 =weekDay = %ld ",comps.weekday);
日历类: 年、月、日 组成日期
NSDateComponents *components = [[NSDateComponents alloc]init];
components.year = 2017;
components.month = 1;
components.day = 21;
components.hour = 1;
components.minute = 22;
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate * date = [calendar dateFromComponents:components];
NSLog(@"%@",date);