NSDateFormatter转换格式
纪元
- g 显示朱利安日数(距离公元前4713年1月1日起的天数)
- G 显示时代/纪元字符串(比如 A.D.或公元)
年
- y 显示不带前导零的年份(2009、2019)
- yy 显示带前导零的年份后两位(09、19)
- yyy 显示四位数字年份(2009、2019)
- yyyy 显示四位数字年份(2009、2019)
- Y / YY / YYY / YYYY 格式与上面一致,只是将这一年中第一周的周日当作今年的第一天,所以慎重使用。
月
- M/L 显示不带前导零的月份(1、12)
- MM/LL 显示带前导零的月份(01、12)
- MMM/LLL 显示为缩写形式的月份(根据语言显示为1月或Jan)
- MMMM/LLLL 显示完整形式的月份(根据语言显示为一月或January)
- 1月 一月 Jan January
- 2月二月 Feb February
- 3月 三月 Mar March
- 4月 四月 Apr April
- 5月 五月 May May
- 6月 六月 Jun June
- 7月 七月 Jul July
- 8月 八月 Aug August
- 9月 九月 Sep September
- 10月 十月 Oct October
- 11月 十一月 Nov November
- 12月 十二月 Dec December
日
- d 显示不带前导零的日期(1、12)
- dd 显示带前导零的日期(01、12)
第几天
- D 显示当前日期是这一年的第几天,不带前导零(5、65、351)
- DD 显示当前日期是这一年的第几天,带前导零(05、65、351)
- DDD 显示当前日期是这一年的第几天,带前导零 (005、065、351)
星期
- e/c 显示当前日期是这一周的第几天,不带前导零 (周四为5,因为以周天为1开始算)
- ee/cc 显示当前日期是这一周的第几天,带前导零 (05)
- eee/E/EE/EEE/ccc 显示当前日期是周几 (周四、Thu)
- eeee/EEEE/cccc 显示当前日期是星期几 (星期四、Thursday)
小时
- h/K 根据设置12/24小时制显示为不带前导零的小时数字 (12小时制的下午四点:4、24小时制的下午四点:16)
- hh/KK 根据设置12/24小时制显示为带前导零的小时数字 (12小时制的下午四点:04、24小时制的下午四点:16)
- H/k 使用24小时制显示为不带前导零的小时数字
- HH/kk 使用24小时制显示为带前导零的小时数字
分钟
- m 将分钟显示为不带前导零的数字
- mm 将分钟显示为带前导零的数字
秒
- s 将秒显示为不带前导零的数字
- ss 将秒显示为带前导零的数字
上午、下午
- a 显示上午/下午、AM/PM
时区
- z/zz/zzz 显示不带前导零的GMT时区偏移量(GMT+8)
- zzzz 显示指定GMT时区的名称(中国标准时间)
- Z/ZZ/ZZZ 显示如 +0800
- ZZZZ 显示如 GMT+08:00
季度
- q/Q 显示当前是第几季度(1、4)
- qq/QQ 显示当前是第几季度(01、04)
- qqq/QQQ 显示当前是第几季度(1季度、Q1)
- qqqq/QQQQ 显示当前是第几季度(第一季度、1st quarter)
其他
- A 该时间是那天的第几微秒
- F/W 显示当前星期为当前月的第几周,范围为1~5。
- w 显示当前是这一年的第几周,不带前导零(一周的开始为周日,第一周从去年的最后一个周日起算)
- ww 显示当前是这一年的第几周,带前导零
NSDateFormatter性能优化
Creating a date formatter is not a cheap operation. If you are likely to use a formatter frequently, it is typically more efficient to cache a single instance than to create and dispose of multiple instances. One approach is to use a static variable.
创建 NSDateFormatter 并不便宜,如果经常使用,则缓存单个实例通常比创建和释放多个实例更高效,可以使用静态变量。
过度的创建 NSDateFormatter 用于 NSDate 和 NSString 之间转换,可能会导致 App 卡顿,打开 Profile 工具查一下性能,你会发现这种操作占用 CPU 使用率是非常高的。
如果使用频繁,那么建议缓存单例,就能提高效率。
static NSDateFormatter *dateFormatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dateFormatter = [[NSDateFormatter alloc] init];
});
自己实现的日期工具类:https://github.com/SunSatan/SSDateHelper