来自Java的Linux和Windows之间的小时差异date.getHour()

1 java linux windows getdate

我有一些解析字符串并创建Date对象的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());
        }
Run Code Online (Sandbox Code Playgroud)

返回的值是Windows上的问题.这与Date的某个方法在Windows上的运行方式与Linux相比有何不一致吗?谢谢你的帮助.

Jon*_*eet 6

检查两个平台上的时区是否相同...我的猜测是它们不是.(打印出来TimeZone.getDefault().getDisplayName()看看默认是什么.)

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

您的输入是什么样的,结果意味着什么?