美文网首页问题总结
iOS YYYY-MM-dd 和 yyyy-MM-dd 时间转换

iOS YYYY-MM-dd 和 yyyy-MM-dd 时间转换

作者: Cingjin | 来源:发表于2020-01-08 10:29 被阅读0次

    问题:

    今天线上产品,突然无法正常获取数据,测试这边反馈过来,之前都是好好的,起初大概看了下前端代码,请求数据的时候入参都是正确的,但还是一直获取不到后台数据,以为是后台哪里出了问题(这里注意啦我看了前端代码确实是没有问题,差点就把锅扣给了后台),但是后台小伙伴也表示检查了代码和接口,并没有发现问题,那么问题可能还是存在前端入参上面,仔细检查后发现确实是自己的锅(深深的对后台小伙伴道歉,再摸摸头),入参的时候时间参数整整多了一年,明明是2019-12-29为什么变成了2020-12-29,然后仔细检查时间转换代码哪里发现了问题,时间转换的时候用的YYYY-MM-dd导致时间转换多了一年时间,之前一直没有注意过这个细节问题!

    问题总结:

    YYYY-MM-dd 和 yyyy-MM-dd 使用问题

    IMG_7160-20200108-100928-

    1、"YYYY format" 是 "ISO week numbering system" 是按照周来计算时间,今天是12月29号周天,是2020年的第一周所以年份开始就是进入了2020年了

    2、"yyyy format" 是 “Gregorian Calendar” 是按天数作为一年的计算单位

    出现这种问题一般都是在特定时间、特定环境出问题的情况比如年末,注意这里 mm 和MM HH和hh在使用的时候也是有区别的,记录一下这个问题希望能帮助看到这篇文章的童鞋,在以后使用的时候注意该细节,避免以后在这种小细节上犯错!

    贴一个时间转换工具:

    
    //NSDate转NSString
    + (NSString *)cj_stringFromDate:(NSDate *)date Formatter:(NSString * _Nullable )str {
        str = str == nil?@"yyyy-MM-dd HH:mm:ss":str;
        //用于格式化NSDate对象
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        //设置格式:zzz表示时区
        [dateFormatter setDateFormat:str];
        //NSDate转NSString
        NSString *currentDateString = [dateFormatter stringFromDate:date];
        //输出currentDateString
        return currentDateString;
    }
    
    //NSString转NSDate
    + (NSDate *)cj_dateFromString:(NSString *)datestring Formatter:(NSString * _Nullable )str {
        str = str == nil?@"yyyy-MM-dd HH:mm:ss":str;
        //设置转换格式
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
        [formatter setDateFormat:str];
        //NSString转NSDate
        NSDate *date=[formatter dateFromString:datestring];
        //get seconds since 1970
        NSTimeInterval interval = [date timeIntervalSince1970];
        int daySeconds = 24 * 60 * 60;
        //calculate integer type of days
        NSInteger allDays = interval / daySeconds;
        return [NSDate dateWithTimeIntervalSince1970:allDays * daySeconds];
    }
    

    相关文章

      网友评论

        本文标题:iOS YYYY-MM-dd 和 yyyy-MM-dd 时间转换

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