0

SVNKitを使用してSVNサーバーからログを取得しています。SVNKitバージョン1.3.2を使用しています。

私が最近見ているいくつかの奇妙な問題を除いて、すべてがうまく機能しています。コミット日取得は、プログラムを実行しているシステムのタイムゾーンに変換されるため、オフセットが導入され、ログ(tortoise svnを使用)およびプログラムの出力に表示される時刻が変更されます。


logEntries = (Collection)repository.log(new String[] {""}, null, startRevision, endRevision, true, true);
for (SVNLogEntry entry : logEntries) {
    Date date = entry.getDate();
    ...
    ...
}

私が欲しいのは、出力がSVNログに表示されるものと同じである必要があるということです。

4

1 に答える 1

2

日付を「出力」する方法を実際に示すわけではありません。これはおそらくここで関連するコードです。を使用していると思いますtoString()

オブジェクトは、1970年1月1日以降のjava.util.Dateミリ秒単位のオフセットとして時間を格納します。00 :00:00GMTtoStringこれをローカルタイムゾーンとより使いやすい形式に変換します。

UTC時刻を印刷するには、代わりに次のことを試してください。

TimeZone utc = TimeZone.getTimeZone("GMT:00");
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.LONG);
dateFormat.setTimeZone(utc);
System.out.println(dateFormat.format(date));

私が欲しいのは、出力される日付がSVNログに表示されるものと同じである必要があることです。」

SVNクライアントで「表示」される内容もローカルタイムゾーンに変換されますが、内部的にはSVNはコミット時間をUTCタイムゾーンに保存します。これは正しいことです。すべてのソフトウェアは、この方法で時間データを処理する必要があります。他に何かを表示する場合は、タイムゾーン情報を明確に表示してユーザーに通知する必要があります。

于 2011-01-03T15:10:23.307 に答える