Неправильная дата извлечена из SVN с использованием SVNKit - PullRequest
0 голосов
/ 03 января 2011

Я использую SVNKit для получения журналов с сервера SVN.Я использую SVNKit версии 1.3.2.

Все работает хорошо и хорошо, за исключением некоторой странной проблемы, с которой я столкнулся в последнее время.Извлечение даты фиксации преобразуется во временную зону системы, в которой выполняется программа, и, таким образом, вводит смещение, изменяя время, отображаемое в журналах (используя svn черепахи) и в выходных данных моей программы.


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

Я хочу, чтобы выходные данные были такими же, как в журналах SVN.

1 Ответ

2 голосов
/ 03 января 2011

Вы на самом деле не показываете, как вы «выводите» дату, которая, вероятно, является уместным фрагментом кода здесь.Я предполагаю, что вы используете toString().

A java.util.Date объект хранит время в виде смещения в миллисекундах после 1 января 1970 года. 00:00:00 GMT .toString преобразует его в местный часовой пояс и дружественный формат.

Чтобы напечатать время UTC, попробуйте вместо этого:

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

Что мне нужно, так это то, что выходные данные должны совпадать с тем, что видно в журналах SVN "

AFAIK то, что вы" видите "в клиенте SVN, также преобразуется в местный часовой поясв то время как внутренне SVN хранит время фиксации в часовом поясе UTC. Это правильно, все программное обеспечение должно обрабатывать данные времени таким образом. Если вы показываете что-то еще, вы должны проинформировать пользователя, четко показывая информацию о часовом поясе.

...