help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: elisp Q: round & display time in 5-min. increments


From: Ari Roponen
Subject: Re: elisp Q: round & display time in 5-min. increments
Date: Fri, 30 Nov 2007 09:51:58 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.50 (gnu/linux)

Hi,

Edward <edward.dodge@gmail.com> writes:

> (concat
>     (format-time-string "%H" (current-time))
>     ":"
>     (int-to-string
>         (* (round (string-to-number (format-time-string
> "%M" (current-
> time))) 5) 5))
>     " ")
>
> This works for most times,  but it doesn't cover any edge conditions.
> For example,  between the 55th minute and the end of the hour,  it
> rounds to "60" and doesn't carry to the hour.  Around the 5th minute,
> it generates "5", but it doesn't pad with a zero.
>
>
> Does anyone know of some pre-existing code in Emacs that does what
> I'm
> trying to do?  Or failing that,  does anyone have an elegant snippet
> of code that accomplishes this task while meeting these edge-
> conditions?  I'm not worried about the midnight edge-condition,  but
> if you know of code that does that too,  so much the better.

I don't know about the existing code, but this seems to do what you
want:

(format-time-string
 "%H:%M "
 (apply 'encode-time
        (let* ((time (decode-time
                      (time-add (current-time)
                                (seconds-to-time 150)))) ;2m30s
               (mins (cadr time)))
          (setcar (cdr time) (- mins (mod mins 5)))
          time)))


-- 
Ari Roponen





reply via email to

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