年
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)
纪元
g 显示朱利安日数(距离公元前4713年1月1日起的天数)
G 显示时代/纪元字符串(比如 A.D.或公元)
其他
A 该时间是那天的第几微秒
F/W 显示当前星期为当前月的第几周,范围为1~5。
w 显示当前是这一年的第几周,不带前导零(一周的开始为周日,第一周从去年的最后一个周日起算)
ww 显示当前是这一年的第几周,带前导零
利用格式字符串将NSDate对象转换成字符串:
NSDateFormatter *dateStringFormatter = [[NSDateFormatter alloc] init];
[dateStringFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *currentDate = [NSDate date];
NSLog(@"date string: %@", [dateStringFormatter stringFromDate:currentDate]); // 2017-08-03 16:13:03
另:NSDateFormatter过度使用会导致APP卡顿,如需频繁使用,建议缓存单例:
static NSDateFormatter *dateFormatter = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
dateFormatter = [[NSDateFormatter alloc] init];
});