做ios开发时,有时候会遇到很简单很小的功能,如题,就比如NSDate和NSString相互转换,虽然很简单,但有时候就记不住,每次都要查资料,好记性不如烂笔头啊,所以还是老老实实记一下,方便以后查阅吧。
1、 NSDate转NSString – 日期转换成字符串
直接上代码:
//获取系统当前时间
NSDate *currentDate = [NSDate date];
//用于格式化NSDate对象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
/**
* 注意:yyyy是小写的;大写的YYYY的意思有些不同——“将这一年中第一周的周日当作今年的第一天”,因此有时结果和yyyy相同,有时就会不同。
MM表示月份,大写,HH表示小时,大写
*/
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSDate转NSString
NSString *currentDateStr = [dateFormatter stringFromDate:currentDate];
//输出currentDateString
NSLog(@"%@",currentDateStr);
NSDate对象一般包含两个部分,日期(Date)和时间(Time),格式化的时间字符串主要也是针对这两部分,NSDateFormatter部用于格式化NSDate对象,支持本地化信息。
NSDateFormatter常用格式如下
yyyy-MM-dd HH:mm:ss.SSS 年-月-日 时:分:秒 毫秒
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
yyyy/MM/dd
NSDateFormatter格式化参数如下:
G: 公元时代,例如AD公元
yy: 年的后2位
yyyy: 完整年
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位
mm: 分,2位
s: 秒,1-2位
ss: 秒,2位
S: 毫秒
2、 NSString 转 NSDate
还是直接上代码啦
//需要转换的字符串
NSString *dateStr = @"2016-06-07 12:08:21";
//设置转换格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSString转NSDate
NSDate *newDate = [formatter dateFromString:dateStr];
注意:过多使用NSDateFormatter将影响程序的性能,且程序中NSDateFormatter对象的时间格式基本一致,所以使用NSDateFormatter的时候尽量使用单例模式。