黑马程序员技术交流社区
标题:
NSDate总结
[打印本页]
作者:
u37kl
时间:
2016-2-19 18:50
标题:
NSDate总结
#NSDate(NSDate类用来表示时间的类)
1、创建一个NSDate对象:NSDate *d1 = [NSDate date]; // 获得当前0时区的时间。
// 日期的格式化:
// yyyy--年
// MM--月
// dd--日
// HH--24小时制,hh--12小时制
// mm--分
// ss--秒
2、NSDate对象 --> 字符串
NSDate *d1 = [NSDate date];
NSDateFormatter *form = [NSDateFormatter new];
form.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒"; // 时期的显示格式
NSString *str = [form stringFromDate:d1]; // 将NSDate对象进行格式化,并转成字符串,使用NSDateFormatter对象格式化后的时间就是当前系统设置的时区的时间了。
3、NSString --> NSDate对象
NSString *str = @"2012-12-21 17:23:12";
NSDateFormatter *form = [NSDateFormatter new];
form.dateFormat = @"yyyy-MM-dd HH:mm:ss"; // 必须要写这一句,字符串转NSDate对象规定以这种格式转换,如果不写,则得到的NSDate对象为null。
NSDate *d2 = [form dateFromString:str];
4、时间运算
NSTimeInterval t = 60*60*24;
NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t]; // 在当前时间的基础上+24小时,即获得明天的这个时间点。
NSDate *zuotian = [NSDate dateWithTimeIntervalSinceNow:-t]; // 在当前时间的基础上-24小时,即获得昨天的这个时间点。
NSDate *now = [NSDate date];
NSDate *zuotian = [now addTimeInterval:t]; // 该方法以过时。在当前时间的基础上+24小时,即获得明天的这个时间点。
NSDate *zuotian = [now addTimeInterval:-t]; // 该方法以过时。在当前时间的基础上-24小时,即获得昨天的这个时间点。
5、NSCalendar对象:
1>获取一个NSDate对象中的年月日分别是多少
NSDate *d = [NSDate date];
NSCalendar *ca = [NSCalendar currentCalendar];
NSDateComponents *cms = [ca components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d]; // 从NSDate对象中截取年月日。
NSLog(@"%ld-%ld-%ld",cms.year, cms.month, cms.day);
2>比较两个时间相差多少。
NSDate *d1 = [NSDate date];
NSDate *d2 = [NSDate date];
// 比较的地方,年月日时分秒都比较。
int unit =NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond;
NSCalendar *ca = [NSCalendar currentCalendar];
NSDateComponents *cms = [ca components:unit fromDate:d toDate:d2 options:0];
// 从NSDate对象中截取年月日。其中option接收一个位枚举的值,当不想设置这个值并且还想用这个方法是,就设置为0,表示我不想设置该值。
NSLog(@"相差%ld年-%ld月-%ld日-%ld时-%ld分-%ld秒",cms.year, cms.month, cms.day,cms.hour, cms.minute, cms.second);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2