NSDate
1.NSDate对象用来表示一个具体的时间点;
2.NSDate是一个类簇。我们所使用的NSDate对象,都是NSDate的私有之类的实体;
3.NSDate储存的是GMT时间,使用的时候会根据当前应用指定的时区进行时间上的增减,以供计算或显示。
NSCalendar
NSCalendar:日历。对世界上现存的常用历法进行了封装,即提供了不同的历法的时间信息,又支持日历的计算。
// currentCalendar取得的值会一直保持在cache中,第一次取得以后如果用户修改该系统日历设定,这个值也不会改变。
NSCalendar* calendar = [NSCalendar currentCalendar];
//如果用autoupdatingCurrentCalendar,那么每次取得的值都会是当前系统设置的日历的值。
NSCalendar* autoupdatingCurrent = [NSCalendar autoupdatingCurrentCalendar];
//如果想要用公历的时候,就要将NSDateFormatter的日历设置成公历。否则随着用户的系统设置的改变,取得的日期的格式也会不一样。
NSCalendar*initCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDateComponents
NSDateComponents:时间容器,一个包含了详细的年月日时分秒的容器。
NSDateFormatter
NSDateFormatter:用于格式化NSDate对象,支持本地化的信息。
常用方法合集
拆分时间
NSDate *currentDate = [NSDate date];//当前时间
NSCalendar *calendar = [NSCalendar currentCalendar];//当前用户的calendar
NSDateComponents * components = [calendar components:NSCalendarUnitYear | NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitMonth | NSCalendarUnitHour | NSCalendarUnitDay fromDate:currentDate];
NSLog(@"%ld年%ld月%ld日%ld时%ld分%ld秒",(long)components.year ,(long)components.month,(long)components.day,(long)components.hour,(long)components.minute,(long)components.second);
根据拆封时间返回NSDate
NSDateComponents * components = [[NSDateComponents alloc] init];
components.year = 2015;
components.month = 9;
components.day = 28;
components.hour = 14;
components.minute = 38;
components.second = 20;
NSCalendar * calendar = [NSCalendar currentCalendar];
NSDate * date = [calendar dateFromComponents:components];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy年MM月dd日hh时mm分ss秒";
NSString * str = [formatter stringFromDate:date];
NSLog(@"%@",str);
NSDateFormatter提供了自定义日期时间的方法,主要是通过设置属性 dateFormat,常见的设置如下:
NSDate * now = [NSDate date];
NSDateFormatter * formatter = [[NSDateFormatter alloc] init];
formatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
formatter.dateFormat = @"yyyy-MM-dd a HH:mm:ss EEEE";
NSString* dateString = [formatter stringFromDate:now];
NSLog(@"\n%@", dateString);
打印输出:2012-10-29 下午 16:25:27 星期一
整理自:
https://www.jianshu.com/p/d7b99f1c081b
https://www.cnblogs.com/wangxiaofeinin/p/3546218.html
https://www.jianshu.com/p/41ab0eaa78ef