iOS中Date和NString的相互轉換


必須知道的內容

  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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM