SimpleDateFormat大写Y和小写y的区别

别等时光非礼了梦想. 提交于 2020-01-27 09:14:21

今天导入订单时发现一只报错,token获取失败,token获取需要传参数当前时间撮timestamp,要求我传的和接口系统获取的不能超过6分钟,我传的是201912301119,接口那边一直报异常,说我的时间异常,debug后发现,那边获取当前时间成了202012301119,奇怪了,两边获取当前时间怎么正好相差一年呢?

  仔细比较才发现,原来是两边的获取当前时间后的格式化不同造成的,我这边是:
  SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
  而服务器那边是:
  SimpleDateFormat sdf = new   SimpleDateFormat("YYYYMMddHHmm");

就是一个字母Y的大小写区别,来来来,我们本地写个main方法测试一下:
小写y:
在这里插入图片描述
大写Y:
在这里插入图片描述
看到没有,格式化时,大写Y和小写y刚好相差一年,下面说一下具体原因:

y 是Year, Y 表示的是Week year

经过试验:Week year 意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。

我现在刚好是2019-12-30 本周刚好跨年,所以出现了上面的额情况,导致今天的程序一直报错,所以我们在开发过程中遇到时间格式化的最好就用小写的yyyy,虽然一年遇到一次,但还是幸运的遇到了,希望能给大家带来帮助。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!