mark UTC和GMT时间
时间用例:2015-01-11 11:11:11
1.时间戳
//现在时间
NSDate *date = [NSDate date];
//从1970年到date的时间间隔(秒数)
double interval = date.timeIntervalSince1970;
//一般我们使用的时间戳精确到毫秒
long long timestamp = interval*1000;
//将时间戳转换为时间
NSDate *tmpDate = [NSDate dateWithTimeIntervalSince1970:timestamp/1000];
有时候可能会用到这几个
//从当前时间到date的秒数
double interval1 = date.timeIntervalSinceNow;
//从2001/01/01到date的秒数
double interval2 = date.timeIntervalSinceReferenceDate;
//两个时间之间的间隔
double interval3 = [date2 timeIntervalSinceDate:date1];
//间隔的天数
int days=((int)interval3)/(3600*24);
2.时间格式化工具NSDateFormatter
NSDate转NSString
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//自定义想要输出的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//转换成字符串
NSString *dateString = [dateFormatter stringFromDate:date];
NSString转NSDate
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设置字符串显示的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//转换成NSData
NSData *date = [dateFormatter dateFromString:dateString];
设置格式时主要英文字母的意义:
yy: 年的后2位
yyyy: 完整年
MM: 月
dd: 日
aa: 上午/下午,AM/PM
HH: 时、24小时制
hh: 时、12小时制
mm: 分
ss: 秒
SSS: 毫秒
Z: 时区 eg:+0800
常见的日期显示格式:
2015-01-11 11:11:11 @"yyyy-MM-dd HH:mm:ss"
2015-01-11T11:11:11 +0800 @"yyyy-MM-dd'T'HH:mm:ss Z"
将NSDate转换成字符串显示还可以用系统提供的两个方法:setDateStyle与setDateStyle
//
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//设置显示style
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
NSString *dateString = [dateFormatter stringFromDate:date];
各种style下的显示形式:
//各种style下的显示形式
NSDateFormatterNoStyle 1/11/15, 11:11 AM
NSDateFormatterMediumStyle Jan 11, 2015, 11:11:11 AM
NSDateFormatterLongStyle January 11, 2015 at 11:11:11 AM GMT+8
NSDateFormatterFullStyle Sunday, January 11, 2015 at 11:11:11 AM China Standard Time
3.时区NSTimeZone
NSDate没有时区的属性,所以如果打印出date为:2015-01-11 03:11:11 +0000
NSDateFormatter是有时区属性的,所以用它转换NSDate的时候可以设置时区;
//
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//utc标准时区
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
[dateFormatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:fromdate];
//输出时间为:2015-01-11 03:11:11
//默认时区(本地时区/系统时区)
NSTimeZone *timeZone1 = [NSTimeZone defaultTimeZone];
NSTimeZone *timeZone2 = [NSTimeZone systemTimeZone];
NSTimeZone *timeZone3 = [NSTimeZone localTimeZone];
//输出时间为:2015-01-11 11:11:11