必須知道的內容
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