You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac OS终端Shell时间追踪脚本:如何计算并追加工作时长

时间追踪脚本扩展:计算工作时长并追加记录

现有脚本基础

已有用于MacOS终端的时间追踪Shell脚本,包含两个核心函数:

  • start:向~/Documents/wrk.txt写入START 日-月-年 时:分:秒格式的开始记录,并输出终端提示
  • stop:向同文件写入STOP 日-月-年 时:分:秒格式的结束记录,并输出终端提示

基础函数代码:

start() {
    local timestamp=$(date +"%d-%m-%Y %H:%M:%S")
    echo "START $timestamp" >> ~/Documents/wrk.txt
    echo "已记录开始时间:$timestamp"
}

stop() {
    local timestamp=$(date +"%d-%m-%Y %H:%M:%S")
    echo "STOP $timestamp" >> ~/Documents/wrk.txt
    echo "已记录结束时间:$timestamp"
}

执行后wrk.txt示例内容:

START 10-08-2022 08:00:00
STOP 10-08-2022 08:06:33

需求实现:计算并追加工作时长

需要实现一个函数,提取wrk.txt最后两行,去除START/STOP标识后计算时间差,最终以totalworktime: 时:分:秒格式追加到原文件。

实现代码

添加以下calc_worktime函数:

calc_worktime() {
    local wrk_file=~/Documents/wrk.txt
    # 提取最后两行并去除前缀标识
    local start_time=$(tail -n 2 "$wrk_file" | head -n 1 | sed 's/^START //')
    local stop_time=$(tail -n 1 "$wrk_file" | sed 's/^STOP //')

    # 将自定义时间格式转为Unix时间戳(适配MacOS date命令)
    local start_epoch=$(date -j -f "%d-%m-%Y %H:%M:%S" "$start_time" +%s)
    local stop_epoch=$(date -j -f "%d-%m-%Y %H:%M:%S" "$stop_time" +%s)

    # 计算时间差(秒)
    local diff_seconds=$((stop_epoch - start_epoch))

    # 转换为时分秒格式并补零
    local hours=$((diff_seconds / 3600))
    local minutes=$(( (diff_seconds % 3600) / 60 ))
    local seconds=$((diff_seconds % 60))
    local formatted_diff=$(printf "%02d:%02d:%02d" $hours $minutes $seconds)

    # 追加结果到文件并提示
    echo "totalworktime: $formatted_diff" >> "$wrk_file"
    echo "已计算并追加工作时长:$formatted_diff"
}

使用方式

执行stop记录结束时间后,直接在终端运行calc_worktime即可完成计算和追加。

效果示例

计算前wrk.txt内容:

START 10-08-2022 08:00:00
STOP 10-08-2022 08:06:33

执行calc_worktime后,文件内容变为:

START 10-08-2022 08:00:00
STOP 10-08-2022 08:06:33
totalworktime: 00:06:33

关键细节说明

  • 适配MacOS的date命令:使用-j参数避免修改系统时间,-f指定输入时间格式,确保能正确解析自定义的日-月-年 时:分:秒格式
  • 时间差计算:通过转换为Unix时间戳(秒数)实现精准差值计算,再转换为时分秒格式
  • 格式补零:用printf的%02d确保时、分、秒均为两位数字,符合输出要求

内容的提问来源于stack exchange,提问作者OXYGEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:09:11