前几天在开发的时候遇到了日期方面的处理,花费了不少时间,踩了点坑,今天就把遇到的写一下. 在 iOS 中 NSDateFormatter 处理时间格式的东东,上次有个需求,就是获取网络请求中 cookie 的时间本文内容
时间格式
cookie 中的时间是这个酱子的:
1 |
Date:Sat, 21 May 2016 07:57:20 GMT |
NSDateFormatter 中有一下格式:
格式 | 说明 |
---|---|
G | 公元时代,例如 AD 公元 |
yy | 年的后 2 位 如:2016 中的 16 |
yyyy | 完整年 如:2016 |
MM | 月,显示为 1-12 |
MMM | 月,显示为英文月份简写,如 Jan |
MMMM | 月,显示为英文月份全称,如 Janualy |
dd | 日,2 位数表示,如 02 |
d | 日,1-2 位显示,如 2 |
EEE | 简写星期几,如 Sun |
EEEE | 全写星期几,如 Sunday |
aa | 上下午,AM/PM |
H | 时,24 小时制,0-23 |
K | 时,12 小时制,0-11 |
m | 分,1-2 位 ( 0-9 是一位 ) |
mm | 分,2 位 |
s | 秒,1-2 位 |
ss | 秒,2 位 |
S | 毫秒 |
Z | GMT |
了解了上面的格式,那就容易多了,故格式是:EEE, dd MMM yyyy HH:mm:ss Z
1 |
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; |
但是上面的代码 得出的 date 可能是 nil,后面查了下原来是少设置了NSLocale (区域设置)
因为时间格式是英文的,所以:
1 |
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; |
另外,关于是使用 en_US_POSIX 还是 en_US 可以看这篇文章
当然,你设置成了 zh_CN ,那格式出来的是中文了,如 “EEE, dd MMM yyyy HH:mm:ss Z” 格式出来的:
1 |
周六, 21 5月 2016 16:37:57 +0800 |
要计算两个日期的有多少天,多少个月,如果要自己计算的话,那就爽歪歪了,不过所幸 iOS 的日历功能 ( NSCalendar ) 可以给我们提供一些便利。
1 |
NSDate *date1 = [formatter dateFromString:@"2016-05-21"]; |
http://blog.csdn.net/crayondeng/article/details/8755306
http://www.125135.com/339261.htm
http://www.cnblogs.com/kaysun/p/5466508.html