taskwarrior-是否可以报告在任务上花费的时间?

时间:2019-09-29 17:26:02

标签: taskwarrior

我正在尝试使用taskwarrior跟踪时间以进行结算。

为此,我试图生成一份报告,显示每个任务花费的时间。标准的已完成报告提供了创建日期和完成日期,但未提供时间,因此我看不到该任务花费了多少小时。

$ task completed project:test

ID UUID     Created    Completed  Age   Project Description
 - fed3daca 2019-09-29 2019-09-29 10min test    test1
 - 31a8f13e 2019-09-29 2019-09-29 1min  test    test2      

2 tasks

这是任务战士可以做的吗? 谢谢

2 个答案:

答案 0 :(得分:2)

我不认为taskwarrior可以自己创建那些报告,但是您可以使用timewarrior来完成。

设置时间战士后,将跟踪在任务上花费的时间。 示例:

➜  ~ task add reply on stack overflow 
Created task 341.
➜  ~ task start 341
Starting task 81b73133 'reply on stack overflow'.
Started 1 task.
Tracking "reply on stack overflow"
  Started 2020-04-10T12:07:58
  Current                  59
  Total               0:00:01
➜  ~ task 341 done 
Completed task 81b73133 'reply on stack overflow'.
Completed 1 task.
Recorded "reply on stack overflow"
  Started 2020-04-10T12:07:58
  Ended                 09:12
  Total               0:01:14

默认情况下,您会看到您在任务上花费了多少时间。如果您多次启动和停止任务,或者想查看花费在项目或带有特定标签的任务上的时间,则可以直接查询timewarrior:

➜  ~ timew summary 'reply on stack overflow'

Wk  Date       Day Tags                       Start      End    Time   Total
W15 2020-04-10 Fri reply on stack overflow 12:07:58 12:09:12 0:01:14 0:01:14
                                                                            
                                                                     0:01:14

这显示了您今天在该任务上花费的时间。您还可以指定一个时间间隔,以查看要花费在任务/项目/标签上的总时间。 示例:

➜  ~ timew summary 2020-01-01 - tomorrow 'reply on stack overflow'

Wk  Date       Day Tags                       Start      End    Time   Total
W15 2020-04-10 Fri reply on stack overflow 12:07:58 12:09:12 0:01:14 0:01:14
                                                                            
                                                                     0:01:14

要查看您在项目test上花费了多少时间,可以运行:

timew summary 2018-01-01 - tomorrow test

这还将包括名为“ test”的任务和带有标签test的任务。

答案 1 :(得分:0)

正如 Tom Dörr 所提到的,使用 timewarrior 来按标签进行总结。

这是我的做法:

  1. 按日期范围收集标签,根据需要修改日期范围:
    timew tags :week
  2. 从输出中删除标题:
    timew tags :week | tail -n+4
  3. 使用 awk 通过破折号分隔字段并打印第一个字段:
    timew tags :week | tail -n+4 | awk 'BEGIN {FS="-"}; {print $1}'

这会生成所选日期范围的标签列表,每个标签在一行中。现在您可以使用脚本(例如 summarize.sh)来循环遍历这些标签以进行总结:

#!/bin/bash
while read TAG; do
  [ "${TAG}" = "" ] && continue
  timew summary :week "${TAG}"
done < <(timew tags :week | tail -n+4 | awk 'BEGIN {FS="-"}; {print $1}')

这样您也可以处理包含空格的标签。

至少,在 shell/bash 中运行一个循环来永久更新,例如每秒更新一次:

while :; do clear; date; ./summarize.sh; sleep 1; done