(七) IOS学习之--NSDate

今天学习NSDate , 首先我们先了解一下下面几个概念

  • 时间戳 : 计算机元年(1970年1月1日) 距离当前时间的总秒数,服务器给时间时(如截止日期),最好给时间戳比较好处理
  • 日期解析器 : 将日期按照某种格式输出
  • 默认时区 : 格林威治标准时间GMT

1. 当前时间的获取

打印currentDate时加入不同语言,打印结果不一样.当直接打印currentDate和加入英文字符时,打印的时间跟我们当前时区时间是一致的,但是当打印时加入中文或其他语言时,打印的却是零时区的时间
I don't know why , can you help me ?

NSDate *currentDate = [NSDate date];
NSLog(@"%@",currentDate);  //Thu Jul 12 14:07:12 2018
NSLog(@"English %@",currentDate); // English Thu Jul 12 14:07:12 2018
NSLog(@"我是中文 %@",currentDate); //我是中文 2018-07-12 06:07:12 +0000
NSLog(@"私は日本語です %@",currentDate);//私は日本語です 2018-07-12 06:07:12 +0000

2. 自定义格式打印日期

- 创建日期解析器
NSDateFormatter *dateFormatter = [NSDateFormatter new];
- 设置时区
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"Dongguan"];
- 设置日期格式
//2018年07月12日 14:23:01
dateFormatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
NSString *dateStr = [dateFormatter stringFromDate:currentDate];
NSLog(@"%@",dateStr); 

//07-12 14:23:01
dateFormatter.dateFormat = @"MM-dd HH:mm:ss";
NSString *dateStr = [dateFormatter stringFromDate:currentDate];
NSLog(@"%@",dateStr); 

2. 把字符串转成NSDate

NSDate *distanceDate = [dateFormatter dateFromString:@"2018年07月01日 00:00:11"];
NSLog(@"%@",distanceDate); //Sun Jul  1 00:00:11 2018
if(distanceDate){
    //计算两个时间相差的总秒数
    NSInteger seconds = [currentDate timeIntervalSinceDate:distanceDate];
    NSLog(@"%ld",seconds); //1002343
    NSInteger seconds1 = [distanceDate timeIntervalSinceNow];
    NSLog(@"%ld",seconds1); // -1002343
    NSInteger seconds2 = [distanceDate timeIntervalSince1970];
    NSLog(@"%ld",seconds2); // 1530374411
}

你可能感兴趣的:((七) IOS学习之--NSDate)