公元2020年12月30日上午9点,准时开电脑准备开始一天的工作。突然运营的小姐姐过来找,说线上签的合同有问题,应该显示2020年12月30日但是显示的是2021年12月30日。我一听,脸上流露出一切尽在掌握的表情,淡淡地说了句:“知道了,我等下看看。”内心却是-什么鬼,还有这奇葩的问题,难道数据算错了,不应该,这不是都上线一年多的功能,不应该呀!不管了,去看看再说。 根据小姐姐提供的信息,我查询数据库相关数据信息,发现数据库里的数据没有任何问题,历史经验和直觉告诉我,这不是计算的问题,应该是显示层的问题(
看来不是我开发的功能,不是我的锅,我不背,瞬间感觉后背的冷汗落下去了)。既然不是我的问题,那我就看看前端生成合同PDF文件的时候都干了些啥,一看格式化日期使用的是Velocity自带的日期格式化工具,是这么写的
代码语言:javascript复制$!date.format("YYYY年M月d日",${currentDate})
可能踩过坑的同学一眼就看到问题所在了,奈何我没留意过。所以直接打开度娘,问问她是是不是Velocity自己的BUG,结果看了半天,没人碰到。自己想想,要是真是Velocity自己的问题,这么大的问题人不早修复了?嗯,肯定哪里不对,这个时候需要的其实就是去上个卫生间,清空一下思路。好吧,先去个卫生间。
回来会我就看这个写法,总感觉有点别扭呢,我记得自己写的时候都是yyyy-MM-dd 不就是大小写不一样吗,应该没啥问题呀!仔细一想,好像不对呀,那个M貌似就区分大小写,这个没注意过,难道也区分。嗯,遇到这个事情最好的办法就是试试就知道了。于是
这一试,还真不一样。行,问题是找到了,先改了,把线上的问题改了再说。更新了生产环境。通知运营小姐姐再试试。一会小姐姐通知,可以了。线上的问题就这么解决了,可是疑问还在呀,为啥会不一样呢,嗯,肯定是意思不一样呗,你傻不傻。那就去查查都是些啥意思。
还真是不一样,那Week year是什么意思呢 原来表示的是具体日期所在周属于的年份,而外国人人家一周是从周日开始的,只要本周跨年就会变成下一年。对着日历验证了下其他日期,看看对不对。从2020年12月27日到2020年12月31都是同样的情况。心中的疑问终于解决了。小伙伴们学到了吗?
争取每天都能有所进步,有所收获。