• iOS开发NSDate、NSString、时间戳之间的转化


      1 //将UTCDate(世界标准时间)转化为当地时区的标准Date(钟表显示的时间)
      2 //NSDate *date = [NSDate date];   2018-03-27 06:54:41 +0000
      3 //转化后:2018-03-27 14:54:41 +0000
      4 -(NSDate *)getLocalDateFromUTCDate:(NSDate *)UTCDate{
      5     
      6     NSTimeZone *tz = [NSTimeZone defaultTimeZone];
      7     NSInteger seconds = [tz secondsFromGMTForDate: UTCDate];
      8     return [NSDate dateWithTimeInterval: seconds sinceDate: UTCDate];
      9     
     10 }
     11 
     12 //将当地时区的标准Date转化为UTCDate
     13 //当前当地的标准时间:2018-03-27 14:54:41 +0000
     14 //转化为世界标准时间:2018-03-27 06:54:41 +0000
     15 -(NSDate *)getUTCDateFromLocalDate:(NSDate *)LocalDate{
     16     
     17     NSTimeZone *tz = [NSTimeZone defaultTimeZone];
     18     NSInteger seconds = -[tz secondsFromGMTForDate: LocalDate];
     19     return [NSDate dateWithTimeInterval: seconds sinceDate: LocalDate];
     20     
     21 }
     22 
     23 //根据UTCDate获取当前时间字符串(钟表上显示的时间)
     24 //输入:[NSDate date]     2018-03-27 07:44:05 +0000
     25 //输出:2018-03-27 15:44:05
     26 -(NSString *)localStringFromUTCDate:(NSDate *)UTCDate{
     27     
     28     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
     29     NSTimeZone *tz = [NSTimeZone defaultTimeZone];
     30     [dateFormatter setTimeZone:tz];
     31     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     32     NSString* result=[dateFormatter stringFromDate:UTCDate];
     33     return result;
     34     
     35 }
     36 
     37 //根据UTC字符串获取当前时间字符串(钟表上显示的时间)
     38 //输入:2018-03-27 07:44:05
     39 //输出:2018-03-27 15:44:05
     40 -(NSString *)localStringFromUTCString:(NSString *)UTCString{
     41     
     42     //先将UTC字符串转为UTCDate;
     43     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
     44     NSTimeZone *tz = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
     45     [dateFormatter setTimeZone:tz];
     46     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     47     NSDate *UTCDate = [dateFormatter dateFromString:UTCString];
     48     
     49     [dateFormatter setTimeZone:[NSTimeZone defaultTimeZone]];
     50     NSString* result = [dateFormatter stringFromDate:UTCDate];
     51     return result;
     52 }
     53 
     54 //将当前时间字符串转为UTCDate
     55 -(NSDate *)UTCDateFromLocalString:(NSString *)localString{
     56     
     57     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
     58     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     59     NSDate *date = [dateFormatter dateFromString:localString];
     60     return date;
     61 }
     62 
     63 //将当前时间字符串转为UTC字符串
     64 -(NSString *)UTCStringFromLocalString:(NSString *)localString{
     65     
     66     NSDate *date = [self UTCDateFromLocalString:localString];
     67     NSString *string = [NSString stringWithFormat:@"%@",date];
     68     NSString *result = [string substringToIndex:string.length-6];
     69     return result;
     70     
     71 }
     72 
     73 //UTCDate转UTC字符串
     74 -(NSString *)UTCStringFromUTCDate:(NSDate *)UTCDate{
     75     
     76     NSDateFormatter *dataFormatter = [[NSDateFormatter alloc]init];
     77     [dataFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
     78     NSTimeZone *tz = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
     79     [dataFormatter setTimeZone:tz];
     80     NSString *UTCString = [dataFormatter stringFromDate:UTCDate];
     81     return UTCString;
     82     
     83 }
     84 
     85 //将当前时间(UTCDate)转为时间戳
     86 -(NSString *)timeStampFromUTCDate:(NSDate *)UTCDate{
     87     
     88     NSTimeInterval timeInterval = [UTCDate timeIntervalSince1970];
     89     // *1000,是精确到毫秒;这里是精确到秒;
     90     NSString *result = [NSString stringWithFormat:@"%.0f",timeInterval];
     91     return result;
     92     
     93 }
     94 
     95 //当前时间字符串(钟表上显示的时间)转为时间戳
     96 -(NSString *)timeStamapFromLocalString:(NSString *)localString{
     97     
     98     //先转为UTCDate
     99     NSDate *UTCDate = [self UTCDateFromLocalString:localString];
    100     NSString *timeStamap = [self timeStampFromUTCDate:UTCDate];
    101     return timeStamap;
    102     
    103 }
    104 
    105 //将UTCString转为时间戳
    106 -(NSString *)timeStamapFromUTCString:(NSString *)UTCString{
    107     
    108     //先将UTC字符串转为UTCDate;
    109     NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    110     NSTimeZone *tz = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
    111     [dateFormatter setTimeZone:tz];
    112     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    113     NSDate *UTCDate = [dateFormatter dateFromString:UTCString];
    114     
    115     NSString *timeStamap = [self timeStampFromUTCDate:UTCDate];
    116     return timeStamap;
    117 }
    118 
    119 //时间戳转UTCDate
    120 -(NSDate *)UTCDateFromTimeStamap:(NSString *)timeStamap{
    121     
    122     NSTimeInterval timeInterval=[timeStamap doubleValue];
    123     //  /1000;传入的时间戳timeStamap如果是精确到毫秒的记得要/1000
    124     NSDate *UTCDate=[NSDate dateWithTimeIntervalSince1970:timeInterval];
    125     return UTCDate;
    126     
    127 }

    若是想要将时间戳转为字符串,可根据获得的UTCDate再进行转化
  • 相关阅读:
    系统维护-安全-测试等方面的开源项目
    linux命令学习
    Rancher + k8s + docker 部署资料
    个人java框架 技术分析
    java十年,需要学会的Java开发体系
    IdentityServer4 经典文章
    .net core 资料网站 和 开源项目
    Java 学习资料网站集合
    spring cloud资料汇总
    秦九韶公式 【多项式】
  • 原文地址:https://www.cnblogs.com/lfyDragon/p/8662674.html
Copyright © 2020-2023  润新知