The community commons has some timing actions (time measured start and end). So I would create a log entity for each task that log all start en stop times. You probably could automate the start time when the user open the task in edit mode, but I would create a pause button so the user can pause the task. You could even use an onchangemicroflow on each entity that checks if the status of the task is paused so you can warn the user about the status or just automaticly set it in the running status.
You only need to add all the timing logs together to get the total time.
Regards,
Ronald