我安装了一组从tomcat执行的war文件。
问题在于,tomcat没有在正确的时间接听。
如日志文件中所示
Apr 18, 2018 12:02:14 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/7.0.76
Apr 18, 2018 12:02:14 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Oct 30 2017 10:21:55 UTC
Apr 18, 2018 12:02:14 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 7.0.76.0
Apr 18, 2018 12:02:14 AM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Linux
Apr 18, 2018 12:02:14 AM org.apache.catalina.startup.VersionLoggerListener log
上面显示的时间是2018年4月18日12:02:14 AM但是系统中的当前时间如下所示。
IST 2018年4月17日20:15:33
我已经检查了下面的答案,Change Timezone in Tomcat似乎没有产生预期的结果
我的系统中没有catalina.sh,输出为
/ etc / localtime-> / usr / share / zoneinfo / Asia / Kolkata
即所有人都在IST中
# timedatectl
Local time: Tue 2018-04-17 20:21:29 IST
Universal time: Tue 2018-04-17 14:51:29 UTC
RTC time: Tue 2018-04-17 14:51:29
Time zone: Asia/Kolkata (IST, +0530)
NTP enabled: no
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
我什至重新启动了tomcat,甚至重新启动了服务器,但无济于事
最佳答案
我假设您在Linux上运行您的应用程序。
在远程服务器上的终端中输入date,然后检查本地系统上的日期时间,找出它们之间的时间差(即Timezone offset),并更新下面给出的与时区相关的示例代码
$ date
Psuedo Java代码假定UTC转换为IST来处理日期
public static String UTCtoIST(String dateUTC, DateFormat inputdf, DateFormat expecteddf) {
try {
inputdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date _dateUTC = inputdf.parse(dateUTC);
expecteddf.setTimeZone(TimeZone.getTimeZone("IST"));
return expecteddf.format(_dateUTC);
} catch (Exception e) {
//handle exception here
}
return null;
}
调用方法示例
DateFormat inputdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat expecteddf = new SimpleDateFormat("yyyyMMdd");
UTCtoIST(toDateInUTC, inputdf, expecteddf);