美文网首页
OC语言day08-13时间、日期类 NSDate

OC语言day08-13时间、日期类 NSDate

作者: liyuhong165 | 来源:发表于2016-07-31 22:41 被阅读64次

pragma mark 时间、日期类 NSDate

pragma mark 概念

/**
 一、NSDate 可以用来表示时间, 可以进行一些常见的 日期\时间处理
 
 1. 创建 (date)
 NSDate *nowDate = [NSDate date]; // 保存的是当前的时间
 
 2. 添加一个 时间间隔 (dateByAddingTimeInterval: 追加的时间 (如果想打印当前东八区的时间 就加上8个小时的秒))
 NSDate *nowDateChange = [nowDate dateByAddingTimeInterval:10];

 3. 获取当前的时区 类 (NSTimeZone) (localTimeZone、systemTimeZone)
 NSTimeZone *zone = [NSTimeZone systemTimeZone];

 4. 获取当前的时区 和 指定时间的 时间差 (当前时区:secondsFromGMTForDate:0时区)
 NSInteger seconds = [zone secondsFromGMTForDate:nowDate];

 5. 获取当前的时区 的 时间 (当前时区:dateByAddingTimeInterval:时区差的秒数)
 NSDate *newDate = [nowDate dateByAddingTimeInterval:seconds];

 
 二、时间格式化 (NSDateFormatter)
 
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类

#pragma mark main函数
int main(int argc, const char * argv[])
{
#pragma NSDate
    
#warning 1.NSDate 创建和基本概念
    // NSData 二进制的类
    
    // 只要 是通过 data 方法创建的时间对象, 对象中 就保存了当前的时间
    NSDate *nowDate = [NSDate date]; // 保存的是当前的时间
    NSLog(@"nowDate = %@",nowDate); // 2016-07-31 13:13:29 +0000 (相差8个小时) +0000 (东八区是 +0000 如果在13:13:29 加上8个小时就是当前的时间了)
#warning 2.添加一个时间 间隔 (dateByAddingTimeInterval: 追加的时间 (如果想打印当前东八区的时间 就加上8个小时的秒))
    // 在 nowDate 的基础上 追加多少秒
    NSDate *nowDateChange = [nowDate dateByAddingTimeInterval:10];
    NSLog(@"nowDateChange 加上10秒  = %@",nowDateChange);
    
#warning 3. 获取当前所处的时区 (NSTimeZone)
    /**
     localTimeZone 
     systemTimeZone
     */
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    
#warning 4. 获取当前的时区 和 指定时间的 时间差 (secondsFromGMTForDate)
    NSInteger seconds = [zone secondsFromGMTForDate:nowDate];
//    NSLog(@"0时区 和 东八区的时间差 seconds %lu",seconds); // typedef long NSInteger; 因为是一个long 所以打印的是lu

#warning 5. 将当前的 时间差加上去 --- 得到的是
    NSDate *newDate = [nowDate dateByAddingTimeInterval:seconds];
    NSLog(@"东八区的 newDate = %@",newDate);
    
#pragma 2.时间格式化 (NSDateFormatter)
    // xxxx年xx月xx日 xx小时xx分xx秒
    // xxxx/xx/xx xx/xx/xx
    // xx/xx/xxxx xx/xx/xx
    NSDate *lDate = [NSDate date];
    
    // 1.创建一个时间格式化 对象
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    
    // 2.告诉 时间格式化对象, 按照什么样的格式 来格式化时间
    /**
     yyyy   年
     MM     月
     dd     日
     HH 24小时 hh 12小时
     mm     分钟
     ss     秒钟
     Z      时区
     */
    formatter.dateFormat = @"yyyy年MM月dd日 HH时mm分ss秒 Z";
    
    // 3.利用 时间格式化对象 对 时间进行格式化
    NSString *res = [formatter stringFromDate:lDate];
    NSLog(@"res  = %@",res);

#warning 1. NSString --> NSDate
    NSString *dateS = @"2016-07-31 21:42:42 +0000";
    NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
    // 注意如果是 从NSString格式 转化为NSDate , 那么 dateFormat, 必须和字符串中的时间格式一致,否则可能转换失败
    
    formatter1.dateFormat = @"yyyy-MM-dd HH:mm:ss Z";
    NSDate *date1 = [formatter1 dateFromString:dateS];
    NSLog(@"date1 %@",date1);
    
    
    
    return 0;
}

相关文章

网友评论

      本文标题:OC语言day08-13时间、日期类 NSDate

      本文链接:https://www.haomeiwen.com/subject/ivlxsttx.html