unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* parsing a date
@ 2012-09-28  2:07 Eric Abrahamsen
  2012-09-28  2:50 ` Óscar Fuentes
       [not found] ` <mailman.9886.1348800663.855.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 13+ messages in thread
From: Eric Abrahamsen @ 2012-09-28  2:07 UTC (permalink / raw)
  To: help-gnu-emacs

I'm reading in files with dates in this format: "2011-11-25". I need to
write them out as "2011/11/25". Instead of just manhandling the strings
(I'll likely need this date information in other places) I wanted to
parse the strings into proper date objects, then format them back into
strings. `date-to-time' doesn't work because (parse-time-string
"2011-11-15") gives me:

(nil nil nil 15 11 2011 nil nil nil)

Which is not acceptable to `encode-time', because it requires integers,
not nil. I can't believe this is quite this complicated: do I really
have to replace all the nils with 0 myself?

Any pointers gratefully accepted,

Eric

-- 
GNU Emacs 24.2.50.1 (i686-pc-linux-gnu, GTK+ Version 3.4.4)
 of 2012-09-16 on pellet




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

* Re: parsing a date
  2012-09-28  2:07 parsing a date Eric Abrahamsen
@ 2012-09-28  2:50 ` Óscar Fuentes
  2012-09-28  3:20   ` Eric Abrahamsen
       [not found] ` <mailman.9886.1348800663.855.help-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 13+ messages in thread
From: Óscar Fuentes @ 2012-09-28  2:50 UTC (permalink / raw)
  To: Eric Abrahamsen, help-gnu-emacs

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

> I'm reading in files with dates in this format: "2011-11-25". I need to
> write them out as "2011/11/25". Instead of just manhandling the strings
> (I'll likely need this date information in other places) I wanted to
> parse the strings into proper date objects, then format them back into
> strings.

Why? Once you have the date components, you only need to write them
separated by /

Or just replace - with / on the original date string.

> `date-to-time' doesn't work because (parse-time-string
> "2011-11-15") gives me:
>
> (nil nil nil 15 11 2011 nil nil nil)
>
> Which is not acceptable to `encode-time', because it requires integers,
> not nil. I can't believe this is quite this complicated: do I really
> have to replace all the nils with 0 myself?

(mapcar (lambda (x) (if x x 0)) (parse-time-string "2011-11-15"))



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

* Re: parsing a date
  2012-09-28  2:50 ` Óscar Fuentes
@ 2012-09-28  3:20   ` Eric Abrahamsen
  2012-09-28  4:14     ` Óscar Fuentes
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Abrahamsen @ 2012-09-28  3:20 UTC (permalink / raw)
  To: help-gnu-emacs

On Fri, Sep 28 2012, Óscar Fuentes wrote:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>> I'm reading in files with dates in this format: "2011-11-25". I need to
>> write them out as "2011/11/25". Instead of just manhandling the strings
>> (I'll likely need this date information in other places) I wanted to
>> parse the strings into proper date objects, then format them back into
>> strings.
>
> Why? Once you have the date components, you only need to write them
> separated by /
>
> Or just replace - with / on the original date string.

As I mention, this is on the first step, and I'll likely need the dates
in a few other contexts as well. I suppose you're right, though -- I can
just use the elements of the list returned by parse-time-string.

>> `date-to-time' doesn't work because (parse-time-string
>> "2011-11-15") gives me:
>>
>> (nil nil nil 15 11 2011 nil nil nil)
>>
>> Which is not acceptable to `encode-time', because it requires integers,
>> not nil. I can't believe this is quite this complicated: do I really
>> have to replace all the nils with 0 myself?
>
> (mapcar (lambda (x) (if x x 0)) (parse-time-string "2011-11-15"))

Sure, it's doable, but it just seems odd that `parse-time-string'
returns a structure that `encode-time' can't read!

E

-- 
GNU Emacs 24.2.50.1 (i686-pc-linux-gnu, GTK+ Version 3.4.4)
 of 2012-09-16 on pellet




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

* Re: parsing a date
  2012-09-28  3:20   ` Eric Abrahamsen
@ 2012-09-28  4:14     ` Óscar Fuentes
  2012-09-28  6:11       ` Eric Abrahamsen
       [not found]       ` <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>
  0 siblings, 2 replies; 13+ messages in thread
From: Óscar Fuentes @ 2012-09-28  4:14 UTC (permalink / raw)
  To: help-gnu-emacs

Eric Abrahamsen <eric@ericabrahamsen.net> writes:

>>> Which is not acceptable to `encode-time', because it requires integers,
>>> not nil. I can't believe this is quite this complicated: do I really
>>> have to replace all the nils with 0 myself?
>>
>> (mapcar (lambda (x) (if x x 0)) (parse-time-string "2011-11-15"))
>
> Sure, it's doable, but it just seems odd that `parse-time-string'
> returns a structure that `encode-time' can't read!

I guess that the designers chose to differenciate among `zero' and `not
specified' on the output of parse-time-string.

As for `encode-time', it takes each date-time component as an argument,
not the output of parse-time-string, which is a list. OTOH,
`encode-time' could interpret arguments with value `nil' as `zero'.




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

* Re: parsing a date
  2012-09-28  4:14     ` Óscar Fuentes
@ 2012-09-28  6:11       ` Eric Abrahamsen
       [not found]       ` <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>
  1 sibling, 0 replies; 13+ messages in thread
From: Eric Abrahamsen @ 2012-09-28  6:11 UTC (permalink / raw)
  To: help-gnu-emacs

On Fri, Sep 28 2012, Óscar Fuentes wrote:

> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>
>>>> Which is not acceptable to `encode-time', because it requires integers,
>>>> not nil. I can't believe this is quite this complicated: do I really
>>>> have to replace all the nils with 0 myself?
>>>
>>> (mapcar (lambda (x) (if x x 0)) (parse-time-string "2011-11-15"))
>>
>> Sure, it's doable, but it just seems odd that `parse-time-string'
>> returns a structure that `encode-time' can't read!
>
> I guess that the designers chose to differenciate among `zero' and `not
> specified' on the output of parse-time-string.
>
> As for `encode-time', it takes each date-time component as an argument,
> not the output of parse-time-string, which is a list. OTOH,
> `encode-time' could interpret arguments with value `nil' as `zero'.

I'm also heard of something like this in the works:

(read-time-string "%Y-%m-%d" "2011-11-15")

Where you inform emacs of the format of your incoming strings -- that
seems like it would be more than enough for the sort of thing I'm doing.

E

-- 
GNU Emacs 24.2.50.1 (i686-pc-linux-gnu, GTK+ Version 3.4.4)
 of 2012-09-28 on pellet




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

* Re: parsing a date
       [not found] ` <mailman.9886.1348800663.855.help-gnu-emacs@gnu.org>
@ 2012-09-29 17:00   ` Stefan Monnier
  0 siblings, 0 replies; 13+ messages in thread
From: Stefan Monnier @ 2012-09-29 17:00 UTC (permalink / raw)
  To: help-gnu-emacs

> (mapcar (lambda (x) (if x x 0)) (parse-time-string "2011-11-15"))

(if X X Y) => (or X Y)


        Stefan


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

* Re: parsing a date
       [not found]       ` <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>
@ 2012-10-14  1:51         ` David Combs
  2012-10-14  7:18           ` Eric Abrahamsen
  0 siblings, 1 reply; 13+ messages in thread
From: David Combs @ 2012-10-14  1:51 UTC (permalink / raw)
  To: help-gnu-emacs

In article <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>,
Eric Abrahamsen  <eric@ericabrahamsen.net> wrote:
>
>I'm also heard of something like this in the works:
>
>(read-time-string "%Y-%m-%d" "2011-11-15")
>
>Where you inform emacs of the format of your incoming strings -- that
>seems like it would be more than enough for the sort of thing I'm doing.
>
>E

In the works where, and when?

David




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

* Re: parsing a date
  2012-10-14  1:51         ` David Combs
@ 2012-10-14  7:18           ` Eric Abrahamsen
  0 siblings, 0 replies; 13+ messages in thread
From: Eric Abrahamsen @ 2012-10-14  7:18 UTC (permalink / raw)
  To: help-gnu-emacs

On Sun, Oct 14 2012, David Combs wrote:

> In article <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>,
> Eric Abrahamsen  <eric@ericabrahamsen.net> wrote:
>>
>>I'm also heard of something like this in the works:
>>
>>(read-time-string "%Y-%m-%d" "2011-11-15")
>>
>>Where you inform emacs of the format of your incoming strings -- that
>>seems like it would be more than enough for the sort of thing I'm doing.
>>
>>E
>
> In the works where, and when?

I believe it's this: http://www.emacswiki.org/emacs-zh/StrPTime

-- 
GNU Emacs 24.2.50.1 (i686-pc-linux-gnu, GTK+ Version 3.4.4)
 of 2012-10-10 on pellet




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

* Re: parsing a date
       [not found] <mailman.9885.1348798043.855.help-gnu-emacs@gnu.org>
@ 2012-12-02  7:25 ` WJ
  2012-12-23  5:55   ` Eric Abrahamsen
  0 siblings, 1 reply; 13+ messages in thread
From: WJ @ 2012-12-02  7:25 UTC (permalink / raw)
  To: help-gnu-emacs

Eric Abrahamsen wrote:

> I'm reading in files with dates in this format: "2011-11-25". I need to
> write them out as "2011/11/25". Instead of just manhandling the strings
> (I'll likely need this date information in other places) I wanted to
> parse the strings into proper date objects, then format them back into
> strings. `date-to-time' doesn't work because (parse-time-string
> "2011-11-15") gives me:
> 
> (nil nil nil 15 11 2011 nil nil nil)
> 
> Which is not acceptable to `encode-time', because it requires integers,
> not nil. I can't believe this is quite this complicated: do I really
> have to replace all the nils with 0 myself?
> 
> Any pointers gratefully accepted,
> 
> Eric

(format-time-string "%Y/%m/%d"
  (apply 'encode-time 0 0 0
    (nthcdr 3 (parse-time-string "2011-11-15"))))

==> "2011/11/15"


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

* Re: parsing a date
  2012-12-02  7:25 ` WJ
@ 2012-12-23  5:55   ` Eric Abrahamsen
  2012-12-24  0:39     ` ken
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Abrahamsen @ 2012-12-23  5:55 UTC (permalink / raw)
  To: help-gnu-emacs

"WJ" <w_a_x_man@yahoo.com> writes:

> Eric Abrahamsen wrote:
>
>> I'm reading in files with dates in this format: "2011-11-25". I need to
>> write them out as "2011/11/25". Instead of just manhandling the strings
>> (I'll likely need this date information in other places) I wanted to
>> parse the strings into proper date objects, then format them back into
>> strings. `date-to-time' doesn't work because (parse-time-string
>> "2011-11-15") gives me:
>> 
>> (nil nil nil 15 11 2011 nil nil nil)
>> 
>> Which is not acceptable to `encode-time', because it requires integers,
>> not nil. I can't believe this is quite this complicated: do I really
>> have to replace all the nils with 0 myself?
>> 
>> Any pointers gratefully accepted,
>> 
>> Eric
>
> (format-time-string "%Y/%m/%d"
>   (apply 'encode-time 0 0 0
>     (nthcdr 3 (parse-time-string "2011-11-15"))))
>
> ==> "2011/11/15"

Only just saw this -- thanks very much!




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

* Re: parsing a date
  2012-12-23  5:55   ` Eric Abrahamsen
@ 2012-12-24  0:39     ` ken
  2012-12-24  3:02       ` Eric Abrahamsen
  0 siblings, 1 reply; 13+ messages in thread
From: ken @ 2012-12-24  0:39 UTC (permalink / raw)
  Cc: help-gnu-emacs

On 12/23/2012 12:55 AM Eric Abrahamsen wrote:
> (format-time-string "%Y/%m/%d"
>>     (apply 'encode-time 0 0 0
>>       (nthcdr 3 (parse-time-string "2011-11-15"))))

Nice.  I was wanting to do something very close to this awhile back.  Of 
course the above code is more useful in the context of a function, 
something like the below-- which has something missing.  What?

(setq ddd "2013-02-11.tail")  ;Want to remove tail on string also

(defun ddd
(format-time-string "%A, %B %d, %Y"
    (apply 'encode-time 0 0 0
	  (nthcdr 3 (parse-time-string ddd)))))




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

* Re: parsing a date
  2012-12-24  0:39     ` ken
@ 2012-12-24  3:02       ` Eric Abrahamsen
  2012-12-24  3:54         ` ken
  0 siblings, 1 reply; 13+ messages in thread
From: Eric Abrahamsen @ 2012-12-24  3:02 UTC (permalink / raw)
  To: help-gnu-emacs

ken <gebser@mousecar.com> writes:

> On 12/23/2012 12:55 AM Eric Abrahamsen wrote:
>> (format-time-string "%Y/%m/%d"
>>>     (apply 'encode-time 0 0 0
>>>       (nthcdr 3 (parse-time-string "2011-11-15"))))
>
> Nice.  I was wanting to do something very close to this awhile back.
> Of course the above code is more useful in the context of a function,
> something like the below-- which has something missing.  What?
>
> (setq ddd "2013-02-11.tail")  ;Want to remove tail on string also
>
> (defun ddd
> (format-time-string "%A, %B %d, %Y"
>    (apply 'encode-time 0 0 0
> 	  (nthcdr 3 (parse-time-string ddd)))))

I suppose this?

--8<---------------cut here---------------start------------->8---
(defun ddd (s)
  (format-time-string "%Y/%m/%d"
    (apply 'encode-time 0 0 0
      (nthcdr 3 (parse-time-string
		 (replace-regexp-in-string "\.tail" "" s))))))
--8<---------------cut here---------------end--------------->8---




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

* Re: parsing a date
  2012-12-24  3:02       ` Eric Abrahamsen
@ 2012-12-24  3:54         ` ken
  0 siblings, 0 replies; 13+ messages in thread
From: ken @ 2012-12-24  3:54 UTC (permalink / raw)
  To: help-gnu-emacs

On 12/23/2012 10:02 PM Eric Abrahamsen wrote:
> ken<gebser@mousecar.com>  writes:
>....
>
> --8<---------------cut here---------------start------------->8---
> (defun ddd (s)
>    (format-time-string "%Y/%m/%d"
>      (apply 'encode-time 0 0 0
>        (nthcdr 3 (parse-time-string
> 		 (replace-regexp-in-string "\.tail" "" s))))))
> --8<---------------cut here---------------end--------------->8---

That works.  Thanks much.





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

end of thread, other threads:[~2012-12-24  3:54 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-28  2:07 parsing a date Eric Abrahamsen
2012-09-28  2:50 ` Óscar Fuentes
2012-09-28  3:20   ` Eric Abrahamsen
2012-09-28  4:14     ` Óscar Fuentes
2012-09-28  6:11       ` Eric Abrahamsen
     [not found]       ` <mailman.9889.1348812706.855.help-gnu-emacs@gnu.org>
2012-10-14  1:51         ` David Combs
2012-10-14  7:18           ` Eric Abrahamsen
     [not found] ` <mailman.9886.1348800663.855.help-gnu-emacs@gnu.org>
2012-09-29 17:00   ` Stefan Monnier
     [not found] <mailman.9885.1348798043.855.help-gnu-emacs@gnu.org>
2012-12-02  7:25 ` WJ
2012-12-23  5:55   ` Eric Abrahamsen
2012-12-24  0:39     ` ken
2012-12-24  3:02       ` Eric Abrahamsen
2012-12-24  3:54         ` ken

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).