【Java】【问题记录】 解决通过new Date()方法获取时间与当前时间时区不一致问题
问题出现原因
项目部署到linux服务器,通过new Date()获取时间和在windows本地时间不一致,通过排查问题,发现是new Date()的问题
linux系统上通过new Date()获取的时间是世界时间(UTC时间)所以在获取时间时需要对时间进行时区的处理操作
方案一:springboot项目在主启动类中通过注解@PostConstruct解决
public static void main(String[] args) {SpringApplication.run(Application.class, args);}/** * 解决通过 new Date()获取时间不一致问题,解决发送审批时间早8八个小时问题 * @PostConstruct 是java的注解,被用来修饰一个非静态非静态的void()方法, *是一种JSR-250的规范,当bean创建完成的时候,会后置执行@PostConstruct修 饰的方法 * spring中@PostConstruct 在Bean初始化中的执行顺序 *Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释 的方法) */@PostConstructvoid started() {TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));}
方案二:在通过new Date()获取时间后,将时间设置成东八区时间
Date date=new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置成东八区时间dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
作者:刘晓伟-liu
来源链接:https://blog.csdn.net/dopdkfsds/article/details/114687238
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。