emacs-orgmode
[Top][All Lists]
Advanced

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

Re: Alternatives to clocking in/out for reporting time


From: Olaf Dietsche
Subject: Re: Alternatives to clocking in/out for reporting time
Date: Sun, 10 Jul 2022 14:26:08 +0200

I also use org-mode clocking to record time spent.

But instead of modifying/configuring org-mode, I use a post-processing
Python script to collect and summarize clocked times.

    locale.setlocale(locale.LC_ALL, '')
    # ...
    def extract_times(line):
        # CLOCK: [YYYY-mm-dd WKD HH:MM]--[YYYY-mm-dd WKD HH:MM] => HH:MM
        m = re.search('CLOCK:\s*\[(.+? .+? .+?)\]--\[(.+? .+? 
.+?)\]\s*=>\s*(.+)', line)
        if m:
            ts = m.group(1)
            start = datetime.datetime.strptime(ts, '%Y-%m-%d %a %H:%M')
            ts = m.group(2)
            stop = datetime.datetime.strptime(ts, '%Y-%m-%d %a %H:%M')
            tm = m.group(3)
            spent = datetime.datetime.strptime(tm, '%H:%M')
            spent = datetime.timedelta(hours = spent.hour, minutes = 
spent.minute)
            logging.debug('time={}, spent={}'.format(line.strip(), spent))
            return (start, stop, spent)

Together with properties or tags or some other means, you can summarize
and round collected times as needed.
This can be done in any other (scripting) language, of course.

setlocale is needed here, because I have German weekday names.

Kind regards, Olaf

Russell Adams <RLAdams@adamsinfoserv.com> writes:

> I make extensive use of timestamps for billing (timesheet)
> purposes. I'm looking to automate this more, and I find the existing
> clocking system inadequate. I'm hoping someone can point me in the
> right direction.
>
> Today I have log mode enabled so that each time I close a TODO item,
> it records the date and time it was closed. At regular intervals while
> working I add inactive timestamps to my notes. I've mapped that to a
> single key, so it's quite fast. If I switch tasks, have an update,
> made progress I want to note to myself, or leave and return I add an
> inactive timestamp. I have well over 1000 inactive timestamps in my
> current file.
>
> Later I can open my agenda view on the working file, choose my
> timespan (week or month), enable log mode to show when items were
> closed, and then enable inactive timestamps to view all of the
> timestamps. This itemizes all the events organized by time into a
> timeline.
>
> It's fairly straightforward from that timeline to count my hours based
> on the record of where I spent my time. It is unfortunately a very
> manual process.
>
> I find Org's clocking to be too detailed, and that it doesn't play
> well with dynamically organized hierarchies of notes. I frequently
> create and close subtasks, or switch parts of the tree. Clocking each
> one is too much overhead, and too granular. I don't need to provide
> down to the minute reports of each item. It also doesn't appear to
> allow rounding of values, so I still have to adjust the results.
>
> What I envision is a way to count items in the agenda view to produce
> a time report. Counting any inactive timestamp as 15 minutes, where if
> a half hour or more is logged I round up to bill the hour. Closed TODO
> items should count toward billing that whole hour. Clearly this should
> be customized.
>
> The point is that I'm not worried about accounting time by task,
> instead I'm aggregating tasks into accounting by whole hours.
>
> I'm looking at org-element, and it appears I'd have to do my own
> agenda style scan of the whole tree to find items to classify by
> hour. While I'm somewhat proficient at elisp, that sounds like a steep
> wall to climb.
>
> Is there an iterative way to review items in an agenda view so I can
> do the math to produce a report?
>
> ------------------------------------------------------------------
> Russell Adams                            RLAdams@AdamsInfoServ.com
>                                     https://www.adamsinfoserv.com/



reply via email to

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