在介绍NSDate的常用方法之前,需要了解时间戳 的概念,所谓时间戳,其实是指 某一日期到1970年的秒数大小,称为该日期的时间戳。
理解了时间戳的概念,下面就介绍一些NSDate的常用方法:
1. 创建了一个当前的日期对象
//1.创建了一个当前的日期对象
//1.1 类方法
NSDate *date1 = [NSDate date];
//1.2 init
NSDate *date2 = [[NSDate alloc] init];
NSLog(@"date1:%@ , date2:%@",date1, date2);
//1.3 dateWithTimeIntervalSinceNow:在当前日期的基础上累加一个数值,单位是秒
//1.3.1 明天
NSDate *nextDate = [NSDate dateWithTimeIntervalSinceNow:24*60*60];
NSLog(@"nextDate:%@",nextDate);
//1.3.2 昨天
NSDate *beforeDate = [NSDate dateWithTimeIntervalSinceNow:-24*60*60];
NSLog(@"beforeDate:%@",beforeDate);
//1.4 dateWithTimeIntervalSince1970:在1970年上加一个数值,该数值是一个时间戳数值
NSDate *date1970 = [NSDate dateWithTimeIntervalSince1970:0];
NSLog(@"date1970:%@",date1970);</span>
2. 获取
时间戳数值
//2.timeIntervalSince1970:获取日期距离1970时的时间戳
NSTimeInterval time1970 = [date1 timeIntervalSince1970];
NSLog(@"time1970:%f",time1970);
//timeIntervalSinceNow:取得日期对象到当前日期时间的数值差
NSTimeInterval timeNow = [nextDate timeIntervalSinceNow];
NSLog(@"timeNow:%f",timeNow);
3.
日期的比较
//3.日期的比较
//3.1 通过日期对象的compare 方法进行比较
NSComparisonResult result = [nextDate compare:date1];
if (result == NSOrderedDescending) {
NSLog(@"nextDate > date1");
}
//3.2 通过比较时间戳
if ([nextDate timeIntervalSince1970] > [date1 timeIntervalSince1970]) {
NSLog(@"nextDate > date1");
}
4.
日期对象格式化为字符串
//4.日期对象格式化为字符串: 2014-07-29 15:20:59 --> 2014年07月29日
// 日期对象 --> 字符串
NSDate *nowDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设置日期的格式 默认会自动转换为当前系统所在时区 东八区
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
//设置时区
NSTimeZone *timezone = [NSTimeZone timeZoneWithName:@"America/New_York"];
[dateFormatter setTimeZone:timezone];
//stringFromDate: 将日期对象格式化为字符串
NSString *datestring = [dateFormatter stringFromDate:nowDate];
NSLog(@"格式化之后:%@",datestring);
5.
将字符串格式化成日期对象
//5.将字符串格式化成日期对象
//字符串 ——> 日期对象
NSString *string = @"2013年07月29日 16:56:05";
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
[dateFormatter2 setDateFormat:@"yyyy年MM月dd日 HH:mm:ss"];
//dateFromString: 将字符串格式化成日期对象
NSDate *formatDate = [dateFormatter2 dateFromString:string];
NSLog(@"%@",formatDate);
6.
获取到所有时区的名称
//6.获取到所有时区的名称
NSArray *zoneNames = [NSTimeZone knownTimeZoneNames];
for (NSString *name in zoneNames) {
NSLog(@"%@",name);
}
NSDate的方法还有其他,需要详细了解可以直接参考API;