[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
## Re: How to: 96 bit Date-time arithmetic?

**From**: |
lawrence mitchell |

**Subject**: |
Re: How to: 96 bit Date-time arithmetic? |

**Date**: |
Sat, 31 Aug 2002 21:49:08 +0100 |

**User-agent**: |
Gnus/5.090007 (Oort Gnus v0.07) Emacs/21.2.90 (i386-mingw-windows98.2222) |

Siegfried Heintze wrote:
>* While I am still curious about 96 bit arithmetic, here an alternative*
>* attempt. Why does not it work?*
>* (setq x (decode-time (current-time)))*
>* (setq y (list (car x) (cadr x) (caddr x) (1- (cadddr x))*
>* (nth 5 x) (nth 6 x) (nth 7 x)(nth 8 x) ))*
^ (nth 4 x)
>* (apply 'encode-time x) ; no error*
>* (apply 'encode-time y) ; error -- why?*
in `nth', N counts from zero.
Hence you want (nth 4 x) before (nth 5 x)
Notice that:
(length x)
=> 9
(length y)
=> 8
I'd probably do
(setcar (nthcdr 3 x) (1- (nth 3 x)))
instead, as it's somewhat easier to read.
On another note of style, you probably don't want to use setq
unless you've already bound x in a `let' form, or x is indeed a
global variable. e.g.
(let ((x (decode-time (current-time))))
(setcar (nthcdr 3 x) (1- (nth 3 x)))
x)
To return the modified value of x.
--
lawrence mitchell <wence@gmx.li>