NSDate与NSDateFormatter

NSDate是一个日期类,在学习之前你可以了解一下UTC- 世界标准时间。

1、NSDate简介

//系统当前时间,不过有时区差,比北京时间晚8小时
NSDate* date1=[NSDate date]; 
NSLog(@"现在时间:%@", date1);

//1.返回北京时间
NSLocale* locale=[NSLocale currentLocale];
NSLog(@"系统当前时间:%@",[date1 descriptionWithLocale:locale]);

//2.返回北京时间
NSTimeZone* zone=[NSTimeZone systemTimeZone]; //时区
NSUInteger interval=[zone secondsFromGMTForDate:date1];
NSDate* localdate=[date1 dateByAddingTimeInterval:interval];
NSLog(@"系统当前时间按:%@",localdate);

//3.返回北京时间
NSCalendarDate* cdate=[NSCalendarDate calendarDate]; //日历
NSLog(@"系统当前时间按:%@",cdate);

//此方法以秒为单位,返回距离现在的时间点 ;正数表示之后,负数表示之前
NSDate* date2=[NSDate dateWithTimeIntervalSinceNow:3600*24];//一天后

NSDate* date3=[NSDate dateWithTimeIntervalSinceNow:-3600*72];//三天前

//距离1970-01-01的时间点
NSDate* date4=[NSDate dateWithTimeIntervalSince1970:3600*24*366*20];
NSLog(@"1970年后20年的时间:%@",date4);

//时间早晚的比较
NSDate* earlydate=[date1 earlierDate:date2]; //返回较早的一个时间
NSLog(@"date1与date2中时间较早的一个:%@",earlydate);

NSDate* laterdate=[date1 laterDate:date2]; //返回较晚的一个时间
NSLog(@"date2与date2中时间较晚的一个:%@",laterdate);

//判断两个日期是否相等
BOOL result=[date1 isEqualToDate:date2];

//时间的比较 返回枚举值
NSComparisonResult result=[date1 compare:date2];
if (result==NSOrderedAscending)
    NSLog(@"date1较date2早");
else if(result==NSOrderedSame)
    NSLog(@"date1与date2日期相等");
else if(result==NSOrderedDescending)
    NSLog(@"date1较date2晚");

//两个时间差  以秒为单位
NSTimeInterval interval2=[date1 timeIntervalSinceDate:date2];
NSLog(@"date1与date2差%f秒",interval2);

//返回很久之后的时间
NSDate* date5=[NSDate distantFuture]; 
NSLog(@"很久之后%@", date5);

//返回很久之前的时间
NSDate* date6=[NSDate distantPast]; 
NSLog(@"很久之前%@", date6);

打印结果

这里写图片描述


2、NSDateFormatter 简介

NSDateFormatter是 NSDate与NString之间的桥梁,它能将NSDate转换成NSString,也能将时间字符串以一定格式转换成NDDate。

1> NSDate 转 NSString

NSDateFormatter *df = [NSDateFormatter alloc] init];//初始化日期格式器

//设置输出的字符串日期格式
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //HH表示输出结果是24小时制;hh表示12小时制

//用NSDateFormatter将日期和字符串关联起来
NSString* dateString=[df stringFromDate:[NSDate date]];

NSLog(@"%@", dateString);

2> NSString 转 NSDate

NSDateFormatter* df1=[[NSDateFormatter alloc]init];//初始化日期格式器

//设置转换成日期的格式  若你的日期字符串中的时间是以24小时制给出 则格式只能用HH
[df1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

//关联
NSDate* date=[df1 dateFromString:@"2015-10-11 15:20:20"];

NSLog(@"%@",date);

打印结果
这里写图片描述

NSDateFormatter格式化参数如下:
G: 公元时代
yy: 年的后2位
yyyy: 完整年
MM: 月, 显示为 1-12
MMM: 月,显示为英文月份的缩写 如Jan
MMMM: 月,显示为英文月份的全称 如Janualy
dd: 日,2位数表示, 如 02、12
d: 日,正常显示 如 2、12
EEE: 简称星期几 如Sun
EEEE: 全称星期几 如Sunday
aa: 上下午 AM或PM
HH:24小时制
hh:12小时制
m:分 正常显示
mm:分 2位数显示
s:秒 正常显示
ss:秒 2位数显示

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值