2011-01-03 10 views
0

SVNKitを使用してSVNサーバーからログを取得しています。私はSVNKitバージョン1.3.2を使用しています。SVNKitを使用してSVNから正しくない日付を抽出しました

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


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

私が望むのは、日付出力はSVNログに表示されるものと同じである必要があります。

答えて

2

日付をどのように出力するかは実際には表示されません。おそらく関連するコードです。私はあなたがtoString()を使用すると推測します。

java.util.Dateオブジェクトは、1970年1月1日以降のミリ秒単位のオフセットとして時刻を格納します。00:00:00 GMTtoString will convert that to the local timezoneと友好的な形式です。

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のタイムゾーンにコミット時間を格納します。これは正しいことです:すべてのソフトウェアはこのように時間データを処理する必要があります。そうでない場合は、ユーザーに明示する必要があります。 eタイムゾーン情報。

関連する問題