【问题标题】:tomcat showing incorrect timetomcat显示时间不正确
【发布时间】:2018-04-17 14:54:08
【问题描述】:

我安装了一组从 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 但是系统中的当前时间如下。

2018 年 4 月 17 日星期二 20:15:33 IST

我已经检查了下面的答案,但是 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甚至服务器,但没有任何帮助

【问题讨论】:

  • 你为什么说你没有catalina.sh?您无权访问它吗?它应该在 {tomcat_home}/bin
  • 我已在 tomcat/home 中签入文件 catalina.sh 不存在。我们使用的是 centos 7。
  • 该文件应该在Tomcat服务器安装的bin子目录下,而不是tomcat用户目录下。你用什么命令来运行服务器?
  • 找到 /usr/share/tomcat/bin 的内容 -rw-r--r-- 1 root tomcat 29207 Oct 30 15:52 bootstrap.jar -rw-r--r-- 1根tomcat 1647 Oct 30 15:52 catalina-tasks.xml -rw-r--r-- 1根根 38548 Oct 30 15:52 tomcat-juli.jar
  • 我也使用 systemctl 运行 tomcat 服务器。 systemctl 启动 tomcat

标签: java tomcat war


【解决方案1】:

我假设您在 linux 上运行您的应用程序。 在远程服务器上的终端中输入日期,并检查本地系统上的日期时间,找出它们之间的时间差(即时区偏移)并更新下面给出的时区相关示例代码

$ date

假设 UTC 到 IST 转换的处理日期的伪 java 代码

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);

【讨论】:

  • 因为日期差异在于 Apache Tomcat。开发人员不会同意进行代码更改。我正在寻找一种在 tomcat 中进行更改的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多