Org mode allows you to clock the time you spend on specific tasks in a project.
Start the clock on the current item (clock-in). This inserts the CLOCK keyword together with a timestamp. When called with a C-u prefix argument, select the task from a list of recently clocked tasks.
Stop the clock (clock-out). This inserts another timestamp at the same location where the clock was last started. It also directly computes the resulting time in inserts it after the time range as ‘=> HH:MM’.
Update the effort estimate for the current clock task.
Cancel the current clock. This is useful if a clock was started by mistake, or if you ended up working on something else.
Jump to the entry that contains the currently running clock. With a C-u prefix arg, select the target task from a list of recently clocked tasks.
Insert a dynamic block containing a clock report as an Org-mode table into the current file. When the cursor is at an existing clock table, just update it.
#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file #+END: clocktable
For details about how to customize this view, see the manual.
Update dynamic block at point. The cursor needs to be in the
#+BEGIN line of the dynamic block.
The l key may be used in the agenda (see Weekly/daily agenda) to show which tasks have been worked on or closed during a day.
Chapter 8 of the manual
Charles Cave’s Date and Time tutorial
Bernt Hansen’s clocking workflow