我遇到服务器日期(linux服务器)的问题。当我使用linux'date'命令时,我得到了正确的日期值(实际日期)。如果我修改一些文件 在服务器上,修改日期也是正确的(实际日期)。但是,如果我在服务器上使用java代码System.out.println(new Date()),我会得到1小时差异的日期 即linux'date'命令结果= Wed Sep 16 08:48:25 CEST,System.out.println(new Date())result = Wed Sep 16 07:48:25 GMT + 1 是这个linux配置问题还是错误的使用java获取日期。 感谢
date --rfc-2822; date +%s
星期三,2009年9月16日09:59:36 +0200 1253087976
System.out.println(new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z").format(new Date()));
System.out.println(new Date().getTime() / 1000);
16 wrz 2009 09:00:33 +0100 1253088033
答案 0 :(得分:1)
您必须确保在使用日期之前使用正确的时区(或日历,就此而言 - 不是日期不推荐?)。
例如:
/* Skipping the boring class def part. */
public static void main(String[] args) {
Date date = new Date();
DateFormat myDateFormat = new SimpleDateFormat();
TimeZone firstTime = TimeZone.getTimeZone(args[0]);
myDateFormat.setTimeZone(firstTime);
System.out.println("-->"+args[0]+": " + myDateFormat.format(date));
}
然后,参数可以是您想要的时区,例如“IST”,“GMT”等等。
答案 1 :(得分:0)
这可能是一个时区/夏令时问题。使用:
java.util.Timezone.getDefault()
查看Java配置使用的时区以及夏令时是否适用。
答案 2 :(得分:0)
我建议你升级你的Java安装。您的JRE可能没有最新的夏令时规则。 Java获取自纪元以来的时间,并使用您当前的TZ设置来计算当地时间。 DST规则会不时更改,发生这种情况时,操作系统和JDK都需要更新。
您可以在问题中添加以下内容:
# unix
date --rfc-2822; date +%s
# Java
System.out.println(new SimpleDateFormat("EEE', 'dd' 'MMM' 'yyyy' 'HH:mm:ss' 'Z").format(new Date()));
System.out.println(new Date().getTime() / 1000);
应该输出如下内容:
Wed, 16 Sep 2009 17:26:08 +1000
1253085968