必须知道的内容
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 *dateStr=@"2012-5-4 4:34:23"; dateFormatter.dateFormat=@"yyyy-mm-dd "//后面的hh:mm:ss不写可以吗?答案不写不可以 //dateFormatter.dateFormat=@"yyyy-MM-dd hh:mm:ss";//转化格式 NSLog(@"%@",[dateFormatter dateFromString:dateStr]);
这里写一个java代码改成OC的封装类
DateService
DateService.h文件:
#import <Foundation/Foundation.h> #define PATTERN_STANDARD08W @"yyyyMMdd" #define PATTERN_STANDARD12W @"yyyyMMddHHmm" #define PATTERN_STANDARD14W @"yyyyMMddHHmmss" #define PATTERN_STANDARD17W @"yyyyMMddHHmmssSSS" #define PATTERN_STANDARD10H @"yyyy-MM-dd" #define PATTERN_STANDARD16H @"yyyy-MM-dd HH:mm" #define PATTERN_STANDARD19H @"yyyy-MM-dd HH:mm:ss" #define PATTERN_STANDARD10X @"yyyy/MM/dd" #define PATTERN_STANDARD16X @"yyyy/MM/dd HH:mm" #define PATTERN_STANDARD19X @"yyyy/MM/dd HH:mm:ss" #define PATTERN_STANDARD20H @"HH:mm" #define PATTERN_STANDARD21H @"HH" @interface DateService : NSObject /** 给日期返回固定格式的字符串 */ +(NSString *)date2StringWithDate:(NSDate *)date pattern:(NSString *)pattern; /** 给字符串返回日期 */ +(NSDate *)string2DateWithString:(NSString *)strDate pattern:(NSString *)pattern; /** 获取指定格式的当前日期 */ +(NSString *)getCurrentTimeWithPattern:(NSString *)pattern; /** 获取当前时间 mm:ss */ +(NSString *)getCurrentTime; /** 获取当前时间过后多少秒 */ +(NSString *)getBeforeDateWithM:(double)m; @end
.m
#import "DateService.h" @implementation DateService +(NSString *)date2StringWithDate:(NSDate *)date pattern:(NSString *)pattern{ if(!date){ return @""; } NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = pattern; return [formatter stringFromDate:date]; } +(NSDate *)string2DateWithString:(NSString *)strDate pattern:(NSString *)pattern{ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = pattern; return [formatter dateFromString:strDate]; } +(NSString *)getCurrentTimeWithPattern:(NSString *)pattern{ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = pattern; formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:8 * 3600]; return [formatter stringFromDate:[NSDate date]]; } +(NSString *)getCurrentTime{ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; formatter.dateFormat = @"HH:mm"; formatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:8 * 3600]; return [formatter stringFromDate:[NSDate date]]; } +(NSString *)getBeforeDateWithM:(double)m{ NSDate *date = [NSDate dateWithTimeIntervalSinceNow:m]; return [self date2StringWithDate:date pattern:PATTERN_STANDARD10H];; } @end