how to get UTC timestamp for commit?
Matt Mackall
mpm at selenic.com
Tue Aug 18 17:40:30 UTC 2015
On Tue, 2015-08-18 at 03:32 +0100, Christian Ebert wrote:
> * Matt Mackall on Monday, August 17, 2015 at 14:03:33 -0500
> > On Mon, 2015-08-17 at 10:18 +0200, Olaf Hering wrote:
> >> Assume this output:
> >>
> >> # mutt-hg $ hg log | head -n 4
> >> # changeset: 6479:55ea6e829b46
> >> # tag: tip
> >> # user: Kevin McCarthy <kevin at 8t8.us>
> >> # date: Tue Aug 11 11:20:15 2015 -0700
> >>
> >> I want to get the UTC date of this commit, like:
> >>
> >> # mutt-hg $ hg tip --template "{date(date, '%Y%m%dT%H%M%S')}.r{rev}\n"
> >> # 20150811T112015.r6479
> >>
> >> But it is reported as localtime.
> >
> > It's not reported in localtime (your localtime is apparently +0200).
> > It's reported in the timezone of the committer (like email).
> >
> >> Looking through "hg help templates" I see a
> >> reference to "hg help dates":
> >>
> >> date(date[, fmt])
> >> Format a date. See "hg help dates" for formatting strings.
> >>
> >> But that does not contain a list of formating strings as output, just various
> >> formats for input.
> >
> > Right you are! This actually takes the standard % codes from
> > strftime(3) / date(1), but that won't help you because the timestamp
> > being formatted is in the wrong offset to start with.
> >
> >> What is the format string to report UTC time? I do not have control over how
> >> hg(1) is invoked. All I can do is to pass options to --template.
> >
> > Sadly, I don't think you can do it, then.
> >
> > Mercurial dates are indeed stored in (UTC, offset) pairs, but the
> > templater always combines in the offset for display. There's a helper
> > function localdate which changes the offset to your current timezone, so
> > you can do {date|localdate|date}. If you then invoke hg with TZ=UTC,
> > you'll get a "local" time that's UTC. There is not at present a utcdate
> > helper.
>
> The keyword extension provides an utcdate filter:
>
> $ hg --config extensions.keyword= log -l1 --template '{date|utcdate}\n'
> 2015/08/16 18:24:30
>
> The code looks like this:
> # date like in cvs' $Date
> def utcdate(text):
> ''':utcdate: Date. Returns a UTC-date in this format: "2009/08/18 11:00:13".
> '''
> return util.datestr((util.parsedate(text)[0], 0), '%Y/%m/%d %H:%M:%S')
>
>
> Maybe that helps.
That's a silly place for it?
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list