1

文字列を解析して Date オブジェクトを作成する Java コードがあります。Linux ではすべて正常に動作しますが、Windows では 00:00:00 ではなく 19: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 のメソッドの 1 つが Linux ではなく Windows でどのように機能するかということと矛盾していますか? ご協力いただきありがとうございます。

  • ケン
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 に答える