我正在使用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日志中的内容相同。
答案 0 :(得分:2)
您实际上并未显示如何“输出”日期,这可能是此处的相关代码段。我猜你使用toString()
。
java.util.Date
对象将时间存储为1970年1月1日00:00:00 GMT 之后的偏移量(以毫秒为单位)。 toString
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客户端中“看到”的AFAIK也会转换为本地时区,而内部SVN会将提交时间存储在UTC时区中。这是正确的做法;所有软件都应该以这种方式处理时间数据。如果您显示任何其他内容,则应通过清楚地显示时区信息通知用户。