[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] random weekly event
From: |
Thorsten Jolitz |
Subject: |
Re: [O] random weekly event |
Date: |
Tue, 15 Jul 2014 23:58:47 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Ivan Kanis <address@hidden> writes:
> Hi,
>
> I need to have org agenda (and then appt) manage an event once a week.
> The catch is that is should happen at a random day and hour.
>
> My thinking is that populating programmatically a year entry is probably
> the sanest way to go about it.
>
> Has anyone else done it?
This is not an arcane scientific solution, but should give a random
timestamp for between tomorrow and the end of the current week. You
could write a function (using run-with-timer) that runs this sunday at
00:00h and inserts a todo item with the returned timestamp into an
agenda file:
#+begin_src emacs-lisp
(defun tj/return-random-timestamp-this-week ()
"Insert random timestamp for this week."
(interactive)
(let* ((cal-info (decode-time (current-time)))
(dow (nth 6 cal-info))
(year (nth 5 cal-info))
(month (nth 4 cal-info))
(day (nth 3 cal-info))
(hour (nth 2 cal-info))
(random-day (+ day (1+ (random (- 5 dow)))))
(random-hour (random 23))
(random-minute (random 59))
(random-second (random 59)))
(format-time-string "%D %R"
(encode-time random-second
random-minute
random-hour
random-day
month
year))))
#+end_src
#+results:
: tj/return-random-timestamp-this-week
#+begin_src emacs-lisp :results raw
(let (res)
(dotimes (i 10 res)
(setq res (concat
res
(format "%d: %s\n"
(1+ i)
(tj/return-random-timestamp-this-week))))))
#+end_src
#+results:
1: 07/17/14 17:39
2: 07/16/14 18:18
3: 07/18/14 19:21
4: 07/17/14 12:58
5: 07/16/14 15:30
6: 07/16/14 16:17
7: 07/16/14 04:10
8: 07/16/14 21:37
9: 07/17/14 19:22
10: 07/16/14 13:39
--
cheers,
Thorsten