guile-user
[Top][All Lists]
Advanced

[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-----



reply via email to

[Prev in Thread] Current Thread [Next in Thread]