iOS-日期和字符串的相互转化、日期格式的相互转换

时间格式

G:      公元时代,例如AD公元
yy:     年的后2位
yyyy:   完整年
MM:     月,显示为1-12,带前置0
MMM:    月,显示为英文月份简写,如 Jan
MMMM:   月,显示为英文月份全称,如 Janualy
dd:     日,2位数表示,如02
d:      日,1-2位显示,如2,无前置0
EEE:    简写星期几,如Sun
EEEE:   全写星期几,如Sunday
aa:     上下午,AM/PM
H:      时,24小时制,0-23
HH:     时,24小时制,带前置0
h:      时,12小时制,无前置0
hh:     时,12小时制,带前置0
m:      分,1-2位
mm:     分,2位,带前置0
s:      秒,1-2位
ss:     秒,2位,带前置0
S:      毫秒
Z:      GMT(时区)


1.将日期时间转化为字符串

    // 实例化NSDateFormatter
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    // 设置日期格式
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    // 获取当前日期
    NSDate *currentDate = [NSDate date];
    NSString *currentDateString = [formatter stringFromDate:currentDate];
    
    NSLog(@"%@", currentDateString);

2.将时间字符串转换为日期

    // 实例化NSDateFormatter
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    // 设置日期格式
    [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    // 设置为UTC时区
    // 这里如果不设置为UTC时区,会把要转换的时间字符串定为当前时区的时间(东八区)转换为UTC时区的时间
    [formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
    // 要转换的日期字符串
    NSString *dateString = @"2011-05-03 23:11:40";
    NSDate *someDay = [formatter dateFromString:dateString];
    NSLog(@"%@", someDay);

3.不同日期格式相互转换

    // 实例化NSDateFormatter
    NSDateFormatter *formatter1 = [[NSDateFormatter alloc] init];
    // 设置日期格式
    [formatter1 setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    // 要转换的日期字符串
    NSString *dateString1 = @"2011-05-03 23:11:40";
    // NSDate形式的日期
    NSDate *date =[formatter1 dateFromString:dateString1];
    
    NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
    [formatter2 setDateFormat:@"yyyy/MM/dd HH:mm:ss"];
    NSString *dateString2 = [formatter2 stringFromDate:date ];
    NSLog(@"%@",dateString2);

4.获取当前准确的时间(NSDate格式)

次方法获取的时间会比我们实际时间慢了8个小时

    NSDate *date = [NSDate date];

我们可以使用下面的方法, 来获取当前准确的时间:

    NSDate *date = [NSDate date];
    
    // 直接初始化的时间, 也是当前时间
    //NSDate *date = [[NSDate alloc]init];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    NSTimeInterval interval = [zone secondsFromGMTForDate:date];
    NSDate *currentDate = [date dateByAddingTimeInterval:interval];
    NSLog(@"%@", currentDate);

你可能感兴趣的:(iOS-日期和字符串的相互转化、日期格式的相互转换)