根据这里https://stackoverflow.com/a/40416306/6804200
我更新了我的本地ubuntu jre日期(os日期已经为true)。但是当我运行应用程序时,日期仍然是旧的。
我看应用服务器在Docker - war中部署IntelliJ
https://runnable.com/docker/java/dockerize-your-java-application在这里,但他们不做我想要的。
我想更改运行应用程序的容器的jre
因为这
params.put("createdDate", persisted.getCreatedAt().
now(ZoneId.of(Constants.TURKEY_ZONE)).
format(DateTimeFormatter.ofPattern(Constants.DATE_TIME_FORMAT)));
带错误的日期。
我需要做
java -jar tzupdater.jar -l file:///home/vegan/Downloads/tzdata2016g.tar.gz
就像我在本地做的那样。
操作系统是ubuntu。Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-34-generic x86_64)
有这些图片
jhipster/jhipster-alerter
jhipster/jhipster-console
jhipster/jhipster-registry
mongo rabibtmq,
vimagick/pure-ftpd
and our company image about 1.8 gb.
当项目是应用程序时,大约有10 12 microservices
。我想改变代码内部的东西,而不是开始改变docker的启动选项
- 你需要在容器内运行tzupdater.jar (docker exec -it container_id bash,然后执行更新程序),因为容器有它自己的jre。
- 您还需要使用更新的jre构建新的docker映像,该映像将包含基于最新文件的时区数据库(https://www.iana.org/time-zones)。
- 如果始终保持准确的时区偏移量对您来说至关重要,请考虑使用一些时区web服务。看到这里。
在java中不能用yes来表示docker,你可以在下面一些常见的类或所有创建date对象的类中这样做。
TimeZone.setDefault(TimeZone.getTimeZone("IST")); // IST is for timezone you want to set
那么在Date dt=new Date();
的情况下,它将包含按照IST时区的日期。