美文网首页
Date Formatting中"YYYY"与"yyyy"的区别

Date Formatting中"YYYY"与"yyyy"的区别

作者: 过气的程序员DZ | 来源:发表于2020-12-27 23:25 被阅读0次

1.先上结论


如果你项目中格式化日期中使用了YYYY,那么赶紧修改成yyyy吧!赶紧去,跑步前进,Go!Go!Go!

下面来讲解一下原因!

2.举个例子


//使用YYYY
let format = DateFormatter()
format.dateFormat = "YYYY.MM.dd"
var now = format.string(from: Date()) as String
print("YYYY:\(now)")
    
//使用yyyy
format.dateFormat = "yyyy.MM.dd"
now = format.string(from: Date()) as String
print("yyyy:\(now)")

你运行上面的代码的时候,可能不会有问题!!!但是我在写这篇文章的时候是2020年12月27日。看看我的运行结果

看到结果后有几个问题:

  1. 为什么使用YYYY会打印“2021”?也就是说“YYYY”和“yyyy”有什么区别?
  2. 为什么本人刚刚说:你运行上面代码的时候,可能不会有问题!!!?也就是说什么时候不一样呢?

2.1 解答:“YYYY”和“yyyy”区别

苹果开发者文档Data Formatting GuideUse Format Strings to Specify Custom Formats中有相关的解释

大概意思:

  • yyyy使用的是日历年,我们应该使用日历年这种方式
  • YYYY使用的是当前周所在的年份(Week of Year)
  • 大部分情况下这两种方式的值是一样的

2.2 解答:什么情况下会不一样

这个我们就得了解一下什么是Week of Year,当前周所在的年份!

  • 如果week(周)没有包含1月1日(没有跨年),那么week就属于当前所在的年
  • 如果week包含了1月1日(跨年了),那么week就属于新的一年
  • 2020年12月27日是周日,而周日是一周的开始。所以如果26日运行这个例子,年份上显示是没有问题的。而从2020年12月27日 00:00:00开始显示会有问题!

3.总结


所以说在大部分的情况下YYYYyyyy的值是一样的,只有在跨年的时候会出现问题。

项目中如果涉及到优惠券有效期展示而且使用了YYYY格式化年份,你就呵呵...

总结开篇的结论,如果要格式化输出日期中使用到,一定要使用yyyy这种方式!!!

相关文章

网友评论

      本文标题:Date Formatting中"YYYY"与"yyyy"的区别

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