Mercurial > hg4j
diff src/org/tmatesoft/hg/repo/HgChangelog.java @ 146:8c9f729f4dfa
Timezone finally in use
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Fri, 18 Feb 2011 05:20:18 +0100 |
parents | 144d771ee73c |
children | ab7ea2ac21cb |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/repo/HgChangelog.java Fri Feb 18 04:53:34 2011 +0100 +++ b/src/org/tmatesoft/hg/repo/HgChangelog.java Fri Feb 18 05:20:18 2011 +0100 @@ -19,6 +19,7 @@ import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.Formatter; @@ -26,6 +27,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.TimeZone; import org.tmatesoft.hg.core.Nodeid; import org.tmatesoft.hg.internal.RevlogStream; @@ -106,7 +108,7 @@ private String comment; private List<String> files; // unmodifiable collection (otherwise #files() and implicit #clone() shall be revised) private Date time; - private int timezone; // not sure it's of any use + private int timezone; private Map<String, String> extras; /** @@ -149,9 +151,17 @@ } public String dateString() { + // XXX keep once formatted? Perhaps, there's faster way to set up calendar/time zone? StringBuilder sb = new StringBuilder(30); Formatter f = new Formatter(sb, Locale.US); - f.format("%ta %<tb %<td %<tH:%<tM:%<tS %<tY %<tz", time); + TimeZone tz = TimeZone.getTimeZone("GMT"); + // apparently timezone field records number of seconds time differs from UTC, + // i.e. value to substract from time to get UTC time. Calendar seems to add + // timezone offset to UTC, instead, hence sign change. + tz.setRawOffset(timezone * -1000); + Calendar c = Calendar.getInstance(tz, Locale.US); + c.setTime(time); + f.format("%ta %<tb %<td %<tH:%<tM:%<tS %<tY %<tz", c); return sb.toString(); }