Time 在zsh中转换时间格式
我创建了一个z shell脚本,它使用一个time选项参数。(例如--time 00:03:30)。我希望用户能够以HH:MM:SS以外的格式输入时间。我的脚本已经可以将HH:MM:SS转换为秒(这是最终结果所需要的),但是HH:MM:SS格式很笨拙。因此,我制作了一个函数,将另一种格式(#h#m#s)转换为原始格式:Time 在zsh中转换时间格式,time,converter,zsh,Time,Converter,Zsh,我创建了一个z shell脚本,它使用一个time选项参数。(例如--time 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]|[[
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
是的,我已经创建了自己的解决方案。我来这里是为了找一个更好的。此外,如果你知道任何其他格式,你可以转换成秒,请让我知道 这就是你想要的吗
% zmodload zsh/datetime
% echo $(( $(strftime -r '%H:%M:%S' 01:01:12) - $(strftime -r '%H:%M:%S' 0:0:0) ))
3672
AAAA而我的解决方案根本不起作用。哈哈哈发布你的无效解决方案,也许错误很容易找到原始问题中的代码是我的解决方案。我将进一步研究,但我尝试时你的解决方案返回0。谢谢您的时间。@thefilthypineapple我尝试了zsh 4.3.10,也得到了0。也许你需要zsh5.0.0以这种方式获得正确的结果。是的——“zsh4.3.9(i386-apple-darwin10.0)”。但是,我想分享我的脚本。有没有更通用的方法?