我安装了一组从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);

09-10 04:13
查看更多