我有一个Java应用程序依赖于系统的date/时间来检查新旧电子邮件。
当我正在检查Java应用程序日志时,发现服务器时区已经更改。 这导致应用程序在执行工作时失败。
服务器时区突然变化的原因是什么? 我怎样才能在将来防止这样的问题。
我正在使用Ubuntu的服务器8.04。
你的应用程序是否通过检查Unix时间来检查时间(time_t,自纪元以来的秒数),还是只检查人类expression的时间,忽略时区?
如果是后者,我担心你可能犯了编码错误。 时区可以逐个进程地设置和修改,就像改变TZ环境variables一样简单; 尝试
export TZ=BST date export TZ=EST date
请注意,这是一个环境variables,因此可以由正在运行的进程的subprocessinheritance。 如果java进程碰巧被TZ设置为你没有想到的东西的人重新启动,并且你的启动文件不强制TZ,那么java将运行一个意想不到的时区。
TZ绝不是设定时区的唯一方法, 我想提一下这个,告诉你Unix的devise是为了让时区成为个人的便利,就像你的shell提示符或者PATH一样。 如果你需要一个过程来获得一个特定的时区视图,你需要确保在启动时设置它。