NSDate时间

2022-11-28  本文已影响0人  GX_Dust

一. NSDate

(一). 什么是TC、GMT、UTC时间?

(二). 特别注意的是

(三).常用时间转换方法

1. 获取当前的时间
+(NSString*)getCurrentTimes{

    // 现在时间, 标准的UTC, 没有时区, 与北京时间 -8 小时
    NSDate *date = [NSDate date];
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    
    // 设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
    
    // 转成字符转, 默认又加了8小时
    NSString * dateString = [formatter stringFromDate: date];
    
    NSLog(@"dateString =  %@", dateString);
    
    return dateString;
}
2. 获取当前时间戳(以秒为单位)
+(NSString *)getNowTimeTimestamp{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    
    // 设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"]; 

    // 设置时区,这个对于时间的处理有时很重要, 如果是国外也用@"Asia/Shanghai"要注意
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
        NSTimeZone *zone = [NSTimeZone localTimeZone];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    [formatter setTimeZone:timeZone];
    
        // 现在时间, 标准的UTC, 没有时区, 北京时间减8等于UTC时间
    NSDate *datenow = [NSDate date];

        // 换算成时间戳 (1970-01-01 00:00:00) 与这个时间对比
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];

    return timeSp;

}
+(NSString *)getNowTimeTimestamp2{
    NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
    NSTimeInterval a = [dat timeIntervalSince1970];
    //转为字符型 
    NSString*timeString = [NSString stringWithFormat:@"%0.f", a];
    return timeString;
}
3. 获取当前时间戳 (以毫秒为单位, 一共是13位)
+ (NSString *)getNowTimeTimestamp3
{
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
    
    // 输出样式, 如果有设置setDateFormat, 就失效了
    [formatter setDateStyle:NSDateFormatterMediumStyle];
    [formatter setTimeStyle:NSDateFormatterShortStyle];
    
    // 设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
    [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss SSS"]; 
    
    // 设置时区,这个对于时间的处理有时很重要, 如果是国外也用@"Asia/Shanghai"要注意
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
        NSTimeZone *zone = [NSTimeZone localTimeZone];
    NSTimeZone *zone = [NSTimeZone systemTimeZone];
    [formatter setTimeZone:timeZone];
    
    // 现在时间, 标准的UTC, 没有时区, 北京时间减8等于UTC时间
    NSDate *datenow = [NSDate date];
    
    // 换算成时间戳 与(1970-01-01 00:00:00) 这个时间对比
    NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)([datenow timeIntervalSince1970]*1000)];
    
    return timeSp;
}
4. NSDate的计算
// 当前UTC时间
NSDate *courrentDate = [NSDate date];

// 计算当前时间与UTC时间的差值
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSTimeInterval interval = [zone secondsFromGMT];

// 拼接差值, 这个date显示的当前的北京时间, 不要这么用, NSdata我们要保存的UTC时间, 如果这么用, 容易出现混乱
NSDate *date = [courrentDate dateByAddingTimeInterval:interval];
上一篇 下一篇

猜你喜欢

热点阅读