从Java date.getHour()开始,Linux和Windows之间的小时差异

我有一些parsingstring并创buildDate对象的java代码。 在Linux上,一切工作正常,但在Windows上,它始终在19:00:00而不是00:00:00开始。 这里是代码:

if(currTask != null) { if((m = p0.matcher(currTask)).matches()) { date = new Date(Long.valueOf(m.group(2)) - Long.valueOf(m.group(1))); } else if((m = p.matcher(currTask)).matches()) { date = new Date(System.currentTimeMillis() - Long.valueOf(m.group(1))); } return padded(date.getHours())+":"+padded(date.getMinutes())+":"+padded(date.getSeconds()); } 

返回的值是Windows上的问题。 这与Date中的某个方法如何在Windows上工作而不是Linux有些不一致? 谢谢你的帮助。

检查你的时区在两个平台上是一样的…我的猜测是,他们不是。 (打印出TimeZone.getDefault().getDisplayName()来查看默认值是什么。)

但是,您不应该使用Date.getHours() / getMinutes() / getSeconds() / getSeconds() 。 他们被弃用。 你可以使用Calendar …或者你可以咬紧牙关,使用Joda Time ,这是一个非常优秀的日期和时间API。

你的输入是什么样的,结果是什么?

差异必须在您的语言环境中。 在Linux上有影响这个的环境变量。 让我猜猜你在EST(GMT-5)?