iOS新手学习

iOS 日期转换解析(二)-YYYY与yyyy区别

2020-02-06  本文已影响0人  FieryDragon

2019年末最后几天突然收到用户反馈日期年份变成了2020,经沟通发现用户也未手动修改设备时间,而这部分的代码是很久以前的代码最近也没有改动,一时间感到莫名其妙。

查看NSDate数据展示的是2019年且时间也准确,但是转换成字符串却成了2020年时间。后经同事提醒说转换时使用"YYYY"格式的转换后数据是正常的,经测试发现确如同事所说修改后时间正常展示。

示例:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    [formatter setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
    NSDate *datenow = [NSDate date];
    NSString *currentTimeString = [formatter stringFromDate:datenow];
    
    NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
    [formatter2 setDateFormat:@"YYYY-MM-dd"];
    [formatter2 setTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Shanghai"]];
    NSString *currentTimeString2 = [formatter2 stringFromDate:datenow];
    
    NSLog(@"yyyy-currentTimeString:%@",currentTimeString);
    NSLog(@"YYYY-currentTimeString:%@",currentTimeString2);
2019-12-31 10:03:00.807213+0800 Test[1827:14738] yyyy-currentTimeString:2019-12-31
2019-12-31 10:03:00.807415+0800 Test[1827:14738] YYYY-currentTimeString:2020-12-31

原因:
YYYY 是以周为单位计算的,当天所在周属于的年份,我们平常计算日期时最好用yyyy,yyyy才是当天所在的年份。
如果一月1日是星期一,星期二,星期三,星期四,它是新的一年的第一周。如果一月1日是星期五,星期六或星期日,它是前一年的52周或53周。

PS:据说19年末好多公司都遇到了这个问题,程序员们紧急修改上线,都上新闻了😂。

上一篇 下一篇

猜你喜欢

热点阅读