iOS 关于NSDate的一些记录

来源:互联网 发布:手机浏览器不加载js 编辑:程序博客网 时间:2024/06/03 18:58

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"];//转换成NSDataNSData *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 AMNSDateFormatterMediumStyle      Jan 11, 2015, 11:11:11 AMNSDateFormatterLongStyle        January 11, 2015 at 11:11:11 AM GMT+8NSDateFormatterFullStyle        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