[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Help formatting a UTC Timestamp
From: |
tomas |
Subject: |
Re: Help formatting a UTC Timestamp |
Date: |
Tue, 14 Feb 2017 13:48:51 +0100 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tue, Feb 14, 2017 at 12:27:16PM +0000, Guy Baumann wrote:
> I am trying to format a timestamp from an api. It is sent in the
> format "2011-03-24T20:30:47Z"
>
> what I want to output is something like this
> (strftime "%d %b %g " (localtime (current-time)) )
>
> However I am unable to work out how to do this, have tried using
> string->date with results below
>
> Enter `,help' for help.
> scheme@(guile-user)> (define date "2011-03-24T20:30:47Z")
> scheme@(guile-user)> (use-modules (srfi srfi-19))
> scheme@(guile-user)> (string->date "~Y-m-dT~H:~M:SZ" date)
> srfi/srfi-19.scm:1415:18: In procedure priv:string->date:
> srfi/srfi-19.scm:1415:18: In procedure string->date: TIME-ERROR type
> bad-date-format-string: "2011-03-24T20:30:47Z"
You got the args reversed: it's first the date string, then the
template. Besides, you forgot a couple of tildes in your template
(e.g. it's "~m" and not just "m" and so on). Lastly, the template
for the zone offset is "~z" (a small z). The "big Z" in your input
string is just a concrete zone (afaik UTC).
This works:
scheme@(guile-user)> (define mydate "2011-03-24T20:30:47Z")
scheme@(guile-user)> (string->date mydate "~Y-~m-~dT~H:~M:~S~z")
$3 = #<date nanosecond: 0 second: 47 minute: 30 hour: 20 day: 24 month: 3
year: 2011 zone-offset: 0>
hth
- -- t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
iEYEARECAAYFAlii/LMACgkQBcgs9XrR2kbySACfY3yqQgFw4XWIBZo1Nif8exJ1
jwUAn04XBldYBIWDDhheEjI1nLbFbjhm
=MJ3B
-----END PGP SIGNATURE-----