iOS 关于NSDate的一些记录

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值