NSDate iOS 日期

来源:互联网 发布:诺基亚5500软件 编辑:程序博客网 时间:2024/06/08 02:22
1.NSDate对象用来表示一个具体的时间点。
2.NSDate存储的是GMT时间,使用的时候会根据 当前应用 指定的 时区 进行时间上的增减,以供计算或显示
(1) 日期的创建
+ (instancetype)date;
NSDate *nowDate = [NSDate date];
如上直接创建nowDate ,其现实的是0时区,也就是格林威治时间,如果要显示北京时间,需要进行转换
[nowDate descriptionWithLocale:[NSLocale currentLocale]]; //北京时间
(2)利用与当前时间的间隔来进行时间的创建
+ (instancetype)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
NSDate *date1 = [NSDate dateWithTimeIntervalSinceNow:+60*60*24*30];
其中加号表示时间往前也就是未来时间点 第一个60是表示的秒 第二个时间是分钟 第三个时间是小时 第四个时间是天数 date1表示的时间是距今未来的第30天
其中的加号也可以换成减号,来表示过去的时间。
(3)利用与指定的时间的间隔来创建日期
+ (instancetype)dateWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)date;
NSDate *date2 = [NSDate dateWithTimeInterval:+60*3 sinceDate:date1];
date2 的时间 距 date1的时间又 3 分钟
(4)利用与2001年的时间间隔来创建日期
+ (instancetype)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti;
NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate: +0 ];
date3 表示的是与 2001年1月1日0点0分0秒 的时间间隔为 0 。
(5)利用与1970年的时间间隔来创建时间
+ (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
NSDate *date4 = [NSDate dateWithTimeIntervalSince1970:+60];
(6)未来的某一天
+ (NSDate *)distantFuture;
NSLog(@'%@',[NSDate distantFuture]);
输出的一直是4001年1月1日
(7)过去的某一天
+ (NSDate *)distantPast;
NSLog(@'%@',[NSDate distantPast]);
输出的一直是0000年12月30日
(8)日期格式化
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@'yyyy-MM-dd HH:mm:ss '];
NSString *dateStr = [formatter stringFromDate:nowDate];
将日期转换为字符串格式,便于操作。
其中 yyyy表示年份 MM表示月份 dd表示日期 HH表示小时 mm表示分钟 ss表示秒
还可以将日期格式的字符串还原成日期
NSDate *dates = [formatter dateFromString:dateStr];
(9)时间比较
NSComparisonResult result =[date1 compare:date2];
if(result ==NSOrderedDescending)
{
NSLog(@'date1 时间晚');
}else if(result == NSOrderedAscending)
{
NSLog(@'date2 时间晚');
}else
{
NSLog(@'date1 date2 时间相等');
}
(10)计算时间差
double dateDifference = [date1 timeIntervalSinceNow];
date1 与现在时间相差多少秒
(11)两时间比较
NSLog(@'%@',[date1 laterDate:date2]);
得到较晚的时间,返回的事NSDate类型
NSLog(@'%@',[date1 earlierDate:date2]);
得到较早的时间,返回的事NSDate类型
(12)判断两个日期是否相等
BOOL isEqual = [date2 isEqualToDate:date2];
0 0
原创粉丝点击