项目中某个模块有个导入功能,使用起来偶有发现导入的记录是空的,一开始没注意,以为是记录冲突了,没导成功,而且是已上线的功能,就没太在意。
直到有一天,测试找到我说导入不了了。看了下源码,大概是导入一段时间内,指定某几个星期几的数据,没看出什么问题。
本地运行跑了起来,好家伙,本地导入一点问题没有。怀疑是代码不同步,把线上的代码重发了一遍不行。我这凡胎肉眼看不出问题,没法了,只能打印些主要日志,来看问题了。
本地执行日志
线上日志
百度搜了一下,原来SimpleDateFormat如果不设置语言参数,会自动调用Local获取一些本地的默认参数
Locale.getDefault(Locale.Category.FORMAT)
,其中包含了语言参数
languageKey
windows本地化设置为中文了,但是linux默认还是英文,所以转换出来的星期语言不一样。为了保证达到预期的效果,还是按需加上语言参数吧。
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE");
改成
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEEE", Locale.SIMPLIFIED_CHINESE);
好,问题解决。