在zsh中转换时间格式

时间:2012-09-30 04:59:08

标签: time converter zsh

我创建了一个带有时间选项参数的z shell脚本。 (例如: - 时间00:03:30)我希望用户能够以HH:MM:SS以外的格式输入时间。我的脚本已经可以将HH:MM:SS转换为秒(这是最终结果需要的),但HH:MM:SS格式很笨重。所以,我创建了一个函数,将另一种格式(#h#m#s)转换为原始格式:

    if [ "$(echo "$1" | grep -E "([[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms]|[[:digit:]]+[hms][[:digit:]]+[hms][[:digit:]]+[hms])")" ]; then
        if [ "$(echo "$1" | grep "h")" ]; then
            H="$(echo "$1" | sed -E 's|.*([[:digit:]]+)h.*|\1|')"
        else
            H=00
        fi
        if [ "$(echo "$1" | grep "m")" ]; then
            M="$(echo "$1" | sed -E 's|.*([[:digit:]]+)m.*|\1|')"
        else
            M=00
        fi  
        if [ "$(echo "$1" | grep "s")" ]; then
            S="$(echo "$1" | sed -E 's|.*([[:digit:]]+)s.*|\1|')"
            else
            S=00
        fi
        echo "$H:$M:$S" | sed -Ee 's|:([[:digit:]]):|:0\1:|' -e 's|^([[:digit:]]):|0\1:|' -e 's|:([[:digit:]])$|:0\1|'
    fi

是的,我已经创建了自己的解决方案。我来这里找一个更好的。另外,如果您知道可以转换为秒的任何其他格式,请告诉我们。

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

% zmodload zsh/datetime
% echo $(( $(strftime -r '%H:%M:%S' 01:01:12) - $(strftime -r '%H:%M:%S' 0:0:0) ))
3672