unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* parsing time stamp
@ 2008-05-22 18:25 Xah
  2008-05-22 18:46 ` Drew Adams
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Xah @ 2008-05-22 18:25 UTC (permalink / raw)
  To: help-gnu-emacs

is there a function that parses a timestamp like “Monday, Nov. 28,
1994” so that i can write a function to turn it into the format yyyy-
mm-dd?

Thanks in advance.

  Xah
  xah@xahlee.org
∑ http://xahlee.org/^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: parsing time stamp
  2008-05-22 18:25 parsing time stamp Xah
@ 2008-05-22 18:46 ` Drew Adams
  2008-05-22 19:51 ` David Hansen
  2008-05-22 21:49 ` Johan Bockgård
  2 siblings, 0 replies; 6+ messages in thread
From: Drew Adams @ 2008-05-22 18:46 UTC (permalink / raw)
  To: 'Xah', help-gnu-emacs

> is there a function that parses a timestamp like "Monday, Nov. 28,
> 1994" so that i can write a function to turn it into the format yyyy-
> mm-dd?

It would be useful, but I don't think so. 

See thread "regexp to match formatted time string?" in emacs-devel@gnu.org,
2008-02-01:
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg00060.html






^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: parsing time stamp
  2008-05-22 18:25 parsing time stamp Xah
  2008-05-22 18:46 ` Drew Adams
@ 2008-05-22 19:51 ` David Hansen
  2008-05-22 21:49 ` Johan Bockgård
  2 siblings, 0 replies; 6+ messages in thread
From: David Hansen @ 2008-05-22 19:51 UTC (permalink / raw)
  To: help-gnu-emacs

On Thu, 22 May 2008 11:25:08 -0700 (PDT) Xah wrote:

> is there a function that parses a timestamp like “Monday, Nov. 28,
> 1994” so that i can write a function to turn it into the format yyyy-
> mm-dd?

I'm pretty sure there is such a function in Gnus and Emacs-w3m.

David





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: parsing time stamp
  2008-05-22 18:25 parsing time stamp Xah
  2008-05-22 18:46 ` Drew Adams
  2008-05-22 19:51 ` David Hansen
@ 2008-05-22 21:49 ` Johan Bockgård
  2008-05-23  4:17   ` Kevin Rodgers
  2 siblings, 1 reply; 6+ messages in thread
From: Johan Bockgård @ 2008-05-22 21:49 UTC (permalink / raw)
  To: help-gnu-emacs

Xah <xahlee@gmail.com> writes:

> is there a function that parses a timestamp like “Monday, Nov. 28,
> 1994” so that i can write a function to turn it into the format yyyy-
> mm-dd?

parse-time-string

-- 
Johan Bockgård


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: parsing time stamp
  2008-05-22 21:49 ` Johan Bockgård
@ 2008-05-23  4:17   ` Kevin Rodgers
  2008-05-23  4:47     ` Kevin Rodgers
  0 siblings, 1 reply; 6+ messages in thread
From: Kevin Rodgers @ 2008-05-23  4:17 UTC (permalink / raw)
  To: help-gnu-emacs

Johan Bockgård wrote:
> Xah <xahlee@gmail.com> writes:
> 
>> is there a function that parses a timestamp like “Monday, Nov. 28,
>> 1994” so that i can write a function to turn it into the format yyyy-
>> mm-dd?
> 
> parse-time-string

(parse-time-string "Monday, Nov. 28, 1994")
=> (nil nil nil 28 11 1994 nil nil nil)

Odd that the leading "Monday, " yields nil DOW...  It turns out that is
due to the fact that the parse-time-weekdays variable only has
abbreviations (e.g. "mon"), just like parse-time-months.  Easy to fix:

(let ((parse-time-weekdays (append parse-time-weekdays
				   '(("sunday" . 0)
				     ("monday" . 1)
				     ("tuesday" . 2)
				     ("wednesday" . 3)
				     ("thursday" . 4)
				     ("friday" . 5)
				     ("saturday" . 6)))))
   (parse-time-string "Monday, Nov. 28, 1994"))
=> (nil nil nil 28 11 1994 1 nil nil)

-- 
Kevin Rodgers
Denver, Colorado, USA





^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: parsing time stamp
  2008-05-23  4:17   ` Kevin Rodgers
@ 2008-05-23  4:47     ` Kevin Rodgers
  0 siblings, 0 replies; 6+ messages in thread
From: Kevin Rodgers @ 2008-05-23  4:47 UTC (permalink / raw)
  To: help-gnu-emacs

Kevin Rodgers wrote:
> Johan Bockgård wrote:
>> Xah <xahlee@gmail.com> writes:
>>
>>> is there a function that parses a timestamp like “Monday, Nov. 28,
>>> 1994” so that i can write a function to turn it into the format yyyy-
>>> mm-dd?
>>
>> parse-time-string
> 
> (parse-time-string "Monday, Nov. 28, 1994")
> => (nil nil nil 28 11 1994 nil nil nil)
> 
> Odd that the leading "Monday, " yields nil DOW...  It turns out that is
> due to the fact that the parse-time-weekdays variable only has
> abbreviations (e.g. "mon"), just like parse-time-months.  Easy to fix:
> 
> (let ((parse-time-weekdays (append parse-time-weekdays
>                    '(("sunday" . 0)
>                      ("monday" . 1)
>                      ("tuesday" . 2)
>                      ("wednesday" . 3)
>                      ("thursday" . 4)
>                      ("friday" . 5)
>                      ("saturday" . 6)))))
>   (parse-time-string "Monday, Nov. 28, 1994"))
> => (nil nil nil 28 11 1994 1 nil nil)

That reminds me of a hack I put together a few years ago, to generate a
list of both day names and abbreviations, which are sensitive to the
locale:

   (let ((year (string-to-number (format-time-string "%Y")))
         (month (string-to-number (format-time-string "%m"))))
     (apply 'nconc
            (mapcar (lambda (time)
                      (list (format-time-string "%a." time)
                            (format-time-string "%A" time)))
                    (sort (mapcar (lambda (day)
                                    (encode-time 0 0 0 day month year 0))
                                  '(1 2 3 4 5 6 7))
                          ;; by day of week:
                          (lambda (time-1 time-2)
                            (< (nth 6 (decode-time time-1))
                               (nth 6 (decode-time time-2))))))))

Perhaps that could be incorporated into the initial value of
parse-time-weekdays to handle localized time strings.  There's also a
corresponding hack for month names and abbreviations (parse-time-months):

   (let ((year (string-to-number (format-time-string "%Y"))))
     (apply 'nconc
            (mapcar (lambda (month)
                      (let ((first (encode-time 0 0 0 1 month year 0)))
                        (list (format-time-string "%b." first t)
                              (format-time-string "%B" first t))))
                    '(1 2 3 4 5 6 7 8 9 10 11 12))))

-- 
Kevin Rodgers
Denver, Colorado, USA





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-05-23  4:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-22 18:25 parsing time stamp Xah
2008-05-22 18:46 ` Drew Adams
2008-05-22 19:51 ` David Hansen
2008-05-22 21:49 ` Johan Bockgård
2008-05-23  4:17   ` Kevin Rodgers
2008-05-23  4:47     ` Kevin Rodgers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).