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
  func setTakeCarTime(){
        let dateFormatter = DateFormatter()
        dateFormatter.weekdaySymbols = ["(周日)", "(周一)", "(周二)", "(周三)", "(周四)", "(周五)", "(周六)"]
        dateFormatter.dateFormat = "yyyy-MM-dd eeee HH:mm"
        dateFormatter.timeZone = NSTimeZone.local

        backCarTimeLab.text = dateFormatter.string(from: Date())
        
        
    }
原文地址:https://www.cnblogs.com/hualuoshuijia/p/4979693.html