iOS 中的时间格式化

/ 0评 / 0

在开发中我们会遇到很多关于时间的操作,大部分问题都在时间格式化上,下面我们介绍一下iOS中的时间格式化方法:

    NSString *timeStr = @"2016-10-11 12:12:12";

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    //设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
    [formatter setTimeZone:timeZone];
    
    //将字符串按formatter转成nsdate
    NSDate* date = [formatter dateFromString:timeStr];
    
    NSLog(@"===========格式化后时间为%@",date);
    
    //现在时间,你可以输出来看下是什么格式
    NSDate *datenow = [NSDate date];
    
    //将nsdate按formatter格式转成nsstring
    NSString *nowtimeStr = [formatter stringFromDate:datenow];
    
    NSLog(@"===========当前时间为%@",nowtimeStr);
    
    
    
    NSString *time= @"1466663720";
    
    //时间转时间戳的方法:也就是获取当前时间的时间戳
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
    NSLog(@"timeSp:%@",timeSp); //时间戳的值
    
    //    时间戳转时间的方法
    NSDate *confromTimesp = [NSDate dateWithTimeIntervalSince1970:1466663720];
    NSLog(@"1466663720  = %@",confromTimesp);
    
    NSString *confromTimespStr = [formatter stringFromDate:confromTimesp];
    NSLog(@"confromTimespStr =  %@",confromTimespStr);
    
    
    //    时间戳转时间的方法:
    NSDateFormatter* format = [[NSDateFormatter alloc] init];
    [format setDateStyle:NSDateFormatterMediumStyle];
    [format setTimeStyle:NSDateFormatterShortStyle];
    [format setDateFormat:@"yyyyMMddHHMMss"];
    
    
    NSDate *date1 = [formatter dateFromString:time];
    NSLog(@"date1:%@",date1);

下面介绍一下各种时间字符说明
(:)
时间分隔符。在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。格式化输出中用作时间分隔符的实际字符由您的应用程序的当前区域性值确定。
(/)
日期分隔符。在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。格式化输出中用作日期分隔符的实际字符由您的应用程序的当前区域性确定。
(%)
用于表明不论尾随什么字母,随后字符都应该以单字母格式读取。也用于表明单字母格式应以用户定义格式读取。有关更多详细信息,请参见下面的内容。
d
将日显示为不带前导零的数字(如 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %d。
dd
将日显示为带前导零的数字(如 01)。
EEE
将日显示为缩写形式(例如 Sun)。
EEEE
将日显示为全名(例如 Sunday)。
M
将月份显示为不带前导零的数字(如一月表示为 1)。如果这是用户定义的数字格式中的唯一字符,请使用 %M。
MM
将月份显示为带前导零的数字(例如 01/12/01)。
MMM
将月份显示为缩写形式(例如 Jan)。
MMMM
将月份显示为完整月份名(例如 January)。
gg
显示时代/纪元字符串(例如 A.D.)
h
使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。如果这是用户定义的数字格式中的唯一字符,请使用 %h。
hh
使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
H
使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %H。
HH
使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。
m
将分钟显示为不带前导零的数字(例如 12:1:15)。如果这是用户定义的数字格式中的唯一字符,请使用 %m。
mm
将分钟显示为带前导零的数字(例如 12:01:15)。
s
将秒显示为不带前导零的数字(例如 12:15:5)。如果这是用户定义的数字格式中的唯一字符,请使用 %s。
ss
将秒显示为带前导零的数字(例如 12:15:05)。
f
显示秒的小数部分。例如,ff将精确显示到百分之一秒,而 ffff 将精确显示到万分之一秒。用户定义格式中最多可使用七个 f符号。如果这是用户定义的数字格式中的唯一字符,请使用 %f。
t
使用 12 小时制,并对中午之前的任一小时显示大写的 A,对中午到 11:59 P.M之间的任一小时显示大写的 P。如果这是用户定义的数字格式中的唯一字符,请使用 %t。
tt
对于使用 12 小时制的区域设置,对中午之前任一小时显示大写的 AM,对中午到 11:59 P.M之间的任一小时显示大写的 PM。
对于使用 24 小时制的区域设置,不显示任何字符。
y
将年份 (0-9)显示为不带前导零的数字。如果这是用户定义的数字格式中的唯一字符,请使用 %y。
yy
以带前导零的两位数字格式显示年份(如果适用)。
yyy
以四位数字格式显示年份。
yyyy
以四位数字格式显示年份。
z
显示不带前导零的时区偏移量(如 -8)。如果这是用户定义的数字格式中的唯一字符,请使用 %z。
zz
显示带前导零的时区偏移量(例如 -08)
zzz
显示完整的时区偏移量(例如 -08:00)
格式显示
M/d/yy
12/7/58
d-MMM
7-Dec
d-MMMM-yy
7-December-58
d MMMM
7 December
MMMM yy
D

代码请查看 http://git.oschina.net/zcb1603999/DCTest

评论已关闭。