comparison 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
comparison
equal deleted inserted replaced
145:acc6151b1b7a 146:8c9f729f4dfa
17 package org.tmatesoft.hg.repo; 17 package org.tmatesoft.hg.repo;
18 18
19 import java.io.UnsupportedEncodingException; 19 import java.io.UnsupportedEncodingException;
20 import java.util.ArrayList; 20 import java.util.ArrayList;
21 import java.util.Arrays; 21 import java.util.Arrays;
22 import java.util.Calendar;
22 import java.util.Collections; 23 import java.util.Collections;
23 import java.util.Date; 24 import java.util.Date;
24 import java.util.Formatter; 25 import java.util.Formatter;
25 import java.util.HashMap; 26 import java.util.HashMap;
26 import java.util.List; 27 import java.util.List;
27 import java.util.Locale; 28 import java.util.Locale;
28 import java.util.Map; 29 import java.util.Map;
30 import java.util.TimeZone;
29 31
30 import org.tmatesoft.hg.core.Nodeid; 32 import org.tmatesoft.hg.core.Nodeid;
31 import org.tmatesoft.hg.internal.RevlogStream; 33 import org.tmatesoft.hg.internal.RevlogStream;
32 34
33 35
104 private/* final */Nodeid manifest; 106 private/* final */Nodeid manifest;
105 private String user; 107 private String user;
106 private String comment; 108 private String comment;
107 private List<String> files; // unmodifiable collection (otherwise #files() and implicit #clone() shall be revised) 109 private List<String> files; // unmodifiable collection (otherwise #files() and implicit #clone() shall be revised)
108 private Date time; 110 private Date time;
109 private int timezone; // not sure it's of any use 111 private int timezone;
110 private Map<String, String> extras; 112 private Map<String, String> extras;
111 113
112 /** 114 /**
113 * @see mercurial/changelog.py:read() 115 * @see mercurial/changelog.py:read()
114 * 116 *
147 public Date date() { 149 public Date date() {
148 return time; 150 return time;
149 } 151 }
150 152
151 public String dateString() { 153 public String dateString() {
154 // XXX keep once formatted? Perhaps, there's faster way to set up calendar/time zone?
152 StringBuilder sb = new StringBuilder(30); 155 StringBuilder sb = new StringBuilder(30);
153 Formatter f = new Formatter(sb, Locale.US); 156 Formatter f = new Formatter(sb, Locale.US);
154 f.format("%ta %<tb %<td %<tH:%<tM:%<tS %<tY %<tz", time); 157 TimeZone tz = TimeZone.getTimeZone("GMT");
158 // apparently timezone field records number of seconds time differs from UTC,
159 // i.e. value to substract from time to get UTC time. Calendar seems to add
160 // timezone offset to UTC, instead, hence sign change.
161 tz.setRawOffset(timezone * -1000);
162 Calendar c = Calendar.getInstance(tz, Locale.US);
163 c.setTime(time);
164 f.format("%ta %<tb %<td %<tH:%<tM:%<tS %<tY %<tz", c);
155 return sb.toString(); 165 return sb.toString();
156 } 166 }
157 167
158 public Map<String, String> extras() { 168 public Map<String, String> extras() {
159 return extras; 169 return extras;