//创建当前时间,以格林尼治时间为准
NSDate * date = [NSDate date];
NSLog(@"%@", date);
//某一时间过了多少秒,创建一个新的时间点
NSDate * date2 = [NSDate dateWithTimeInterval:3600 sinceDate:date];
NSLog(@"%@", date2);
//从当前时间过了多少秒,生成新的时间点
NSDate * date3 = [NSDate dateWithTimeIntervalSinceNow:-3600];
NSLog(@"%@", date3);
//从1970/01/01 0时 GMT为准,过后多少秒,生成新的时间
NSDate * date4 = [NSDate dateWithTimeIntervalSince1970:3600];
NSLog(@"%@", date4);
//求对象的时间与制定时间,相差多少秒
NSTimeInterval secs = [date timeIntervalSinceDate:date4];
NSLog(@"%lf", secs);
//求对象时间与系统时间相差多少秒
secs = [date timeIntervalSinceNow];
NSLog(@"*******%lf", secs);
//求对象时间与1970-1-1 GMT相差多少秒
secs = [date timeIntervalSince1970];
NSLog(@"%lf", secs);
//未来时间,用于暂停定时器,将定时器启动时间设为遥远的未来 Never
NSDate * futureDate = [NSDate distantFuture];
//过去时间,用于重启定时器,将定时器启动时间设为遥远的过去 ever
NSDate * pastDate = [NSDate distantPast];
//创建时间戳
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
//使用时间戳的目的,是为了自定义时间的打印格式
dateFormatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss.S";
dateFormatter.dateFormat = @"yy-MM-dd ahh时mm分ss秒";
//hh变成12小时制 a<> am pm
NSLog(@"%@", [dateFormatter stringFromDate:date]);
//NSDate也可以转换为NSString
- (NSString *)StringFromDate:(NSDate *)date{
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString * string = [formatter stringFromDate:date];
return string;
}
//NSStrinig可以转换为NSDate
- (NSDate *)DateFromString:(NSString *)string{
NSDateFormatter * formatter = [[NSDateFormatter alloc]init];
// [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate * date = [formatter dateFromString:string];
return date;
}
在时间字符串转换为NSDate并打印出来的时候会发现少了8小时这是为什么呢,因为时区选的不对,要想纠正这8小时有两种办法:
1.[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
2.[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];