-
创建
//获取到的是当前时间 格林尼治 时间 +0000 表示0时区
NSDate *date1 = [NSDate date]; //类方法
NSDate *date2 = [NSDate alloc] init]; //alloc//时间戳 通常是一个字符序列,唯一地标识某一刻的时间 //[指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数] NSTimeInterval interval = [date timeIntervalSince1970]; //以秒为单位 NSTimeInterVal interval2001 = [date timeIntervalSinceReferenceDate]; //与2001.1.1 00:00:00 的时间间隔 NSTimeInterVal intervalNow = [date timeIntervalSinceNow]; //date被创建后 与 程序运行到这一行代码 的时间间隔 //根据时间戳创建NSDate对象 类方法 和 init方法 都有,都可以 NSDate *date3 = [NSDate dateWithTimeIntervalSince1970:123456789]; NSDate *date4 = [NSDate dateWithTimeIntervalSinceReferenceDate:123456789]; NSDate *date5 = [NSDate dateWithTimeIntervalSinceNow:123456789]; //给定时间 给定时间戳 NSDate *date6 = [NSDate dateWithTimeInterval:123456789 sinceDate:date];
-
计算日期
//根据今天计算昨天和明天
//计算时间间隔
NSTimeInterval second = 24 * 60 * 60;
//与当前时间的时间间隔,如果 昨天 是方法的调用者,那么时间间隔就是负数
NSDate *yesterday = [[NSDate alloc] initWithTimeIntervalSinceNow:-second];
NSDate *tomorrow = [[NSDate alloc] initWithTimeIntervalSinceNow:second];//distanFuture 不可到达的未来的某个时间点 NSDate *futureDate = [NSDate distanFuture]; //distanPast 不可到达的过去的某个时间点 NSDate *pastDate = [NSDate distanFuture]; //判断日期是否相同 BOOL isEqual = [pastDate isEqualToDate:futureDate]; //比较两个日期 返回一个较晚的日期 NSDate *laterDate = [futureDate laterDate:pastDate]; //时间排序 NSComparisonResult result = [pastDate compare:futureDate];
日期类的格式化
//NSDateFormatter
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//定义出想要的格式 EE周几
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss EE";
NSString *dateStr = [formatter stringFromDate:date]; //默认会切换到系统当前时区-
日历类 和 日期组件类
//NSCalendar 日历类 是一个单例类
NSCalendar *calendar = [NSCalendar currentCalendar];
//NSCalendarUnit 这个用来看我们需要哪几个时间[年、月、日、时...NSCalendarUnitYear、...Month、...Day]
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
//用NSDateComponents来接收详细信息
NSDateComponents *components = [calendar components:uint from:date];
NSLog(@"%@",components.description); //description 描述对象 是NSString
//获取年份
NSUInteger year = components.year;//计算两个日期差多少 //(1)定义一个NSCalendarUnit 里面写想要比较的时间内容 NSCalendarUnit unit2 = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitHour; //(2)利用NSDateComponents比较 //参数一:需要计算的组件属性 //参数二:起始时间 //参数三:结束时间 //参数四:默认给0 是一个枚举 NSDateComponents *components2 = [calendar components:unit2 from:futureDate toDate:pastDate options:0]; //两个日期的相隔时间 信息 都存在 components2 中 NSLog(@"相隔年数:%ld,相隔月份:%ld,相隔时数:%ld",components2.year,components2.month,components2.hour);
-
时区设置 TimeZone
//获取所有时区的名字
NSArray *array = [NSArray arrayWithArray:[NSTimeZone knownTimeZoneNames]]; //这个数组中存储的就是所有时区的名字//(1)选择时区 NSTimeZone *timeZone = [NSTimeZone localTimeZone]; //根据系统选择当前时区 //根据名字选择时区 NSTimeZone *timeZoneName = [NSTimeZone timeZoneWithName:@"Europe/Rome"]; //(2)需要用到NSDateFormatter来格式化 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; //设置格式 [formatter setDateFormatter:@"yyyy-MM-dd HH:mm:ss"]; //这一步不能少 //将 时区 赋给 NSDateFormatter [formatter setTimeZone:timeZone]; //将date转换成NSString NSString *str = [formatter stringFromDate:date]; NSLog(@"str = %@",str);
NSDate用法
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 作者:gabriel theodoropoulos,原文链接,原文日期:2015-10-18译者:ray16897...
- 作者:汪志鹏 今天分享的是黄荣华老师《人本教练模式》一书中,九种领导技巧之挖掘愿景。 关于激情 激情包含在性格和情...