2023年4月20日
SimpleDateFormat(“E”)或者SimpleDateFormat(“EEEE”)真的能完美获取到中文的星期几吗?
有一需求,项目中在显示的日期后面需要额外显示一下是周几。这个时候SimpleDateFormat(“E”)就派上用场了,毕竟SimpleDateFormat(“E”)在很多人看来可以完美获取到中国人喜爱的星期几。功能刷刷的完成了,顺利的通过本地测试,测试环境测试,没问题后,部署服务器,然后翻车了。
原因:
经过一番查看,发现使用SimpleDateFormat(“E”)格式化的星期变成英文的了,不再上熟悉的中文。这和事先说好的不一样啊。经过验证,最终得出java虚拟机读取时区不同的原因。
为了验证这个结论,在出现问题的服务器上输出了
System.out.println(“获得时区:” + Locale.getDefault());
输出的结果:获得时区:en_US
出现问题的原因:
出现这种问题的原因有以下几点:
1 启动虚拟机时指定了时区
2 系统的时区不对
2 指定了错误的时区。
解决办法:
解决办法:SimpleDateFormat(“E”, Locale.CHINA);
在构造方法中显示指定时区。