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(xcode8之前aa表示上下午,之后aa表示am/pm,官方代码看不到,做个提醒,如果你是xcode8之前的编辑器,最好把am/pm转成上下午做,网上有传tt可以代表am/pm,楼主亲测,无效) H: 时,24小时制,0-23 K:时,12小时制,0-11 m: 分,1-2位 mm: 分,2位 s: 秒,1-2位 ss: 秒,2位 S: 毫秒
1.date转string
NSDate *date=[NSDate date]; NSLog(@"%@",date);//2015-11-20 00:37:40 +0000 NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];//创建一个日期格式化器 dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss";//指定转date得日期格式化形式 NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 08:24:04 dateFormatter.dateFormat=@"yyyy-MM-dd"; NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 dateFormatter.dateFormat=@"yyyy-MM-dd eeee aa HH:mm:ss"; NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 Friday AM 08:30:28 dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss z"; NSLog(@"%@",[dateFormatter stringFromDate:date]);//2015-11-20 08:42:22 GMT+8
其实date转string只需要根据格式来就可以了,但是string转date需要注意事项
2.string转date
NSString *dateStr=@"2012-5-4 4:34:23"; dateFormatter.dateFormat=@"yyyy-mm-dd hh:mm:ss";
//输出:2012-05-03 20:34:23 +0000
/*
转化的类型必须与dateFormat保持一致
2012-->y
5->m
4->d
*/
NSString *birthdayStr=@"1986-03-28 00:00:00.000"; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"]; [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];//解决8小时时间差问题 NSDate *birthdayDate = [dateFormatter dateFromString:birthdayStr];