1

我有一些解析字符串并创建 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());
        }

返回值是 Windows 上的问题。这与 Date 的方法之一在 Windows 上的工作方式与 Linux 上的工作方式有些不一致吗?谢谢你的帮助。

4

2 回答 2

6

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

但是,无论如何,您都不应该使用Date.getHours()/ getMinutes()/ getSeconds()/ ;getSeconds()它们已被弃用。您可以使用Calendar... 或者您可以硬着头皮使用Joda Time,这是一个非常出色的日期和时间 API。

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

于 2009-09-16T22:12:21.053 回答
2

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

于 2009-09-16T22:12:27.857 回答