SimpleDateFormat大写Y和小写y的区别

今天导入订单时发现一只报错,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,虽然一年遇到一次,但还是幸运的遇到了,希望能给大家带来帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初夏0811

你的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值