微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Zsh 下如何获取两个日期之间的差异?

如何解决在 Zsh 下如何获取两个日期之间的差异?

任何人都知道如何将 How do I get the difference between two dates under bash 处可用的此命令从 bash 转换为 zsh 命令

解决方法

假设您需要多次执行此操作,我会为此创建一个可重用的函数。

  1. 将其放入名为 duration-in-days 的文件中:
    autoload -Uz calendar_scandate
    local start end
    calendar_scandate $1        
    start=$REPLY        
    calendar_scandate $2        
    end=$REPLY        
    print $(( ( end - start ) / ( 24 * 60 * 60 ) ))
    
  2. 在您的 .zshrc 文件中,autoload 您的函数。例如,如果您将函数文件保存在目录 ~/functions 中:
    # Autoload all functions in your ~/functions dir.
    autoload -Uz ~/functions/*~*.zwc
    # Exclude .zwc files (generated when you compile functions).
    
  3. 重新启动您的终端或外壳。

现在你可以像这样使用上面的函数:

% duration-in-days 2012-01-15 2012-02-03
19
%

如果您想在可执行脚本中使用此函数,请记住在您的脚本中autoload

,

虽然 bash 和 zsh 相当不同,但它们非常相似,在您的情况下,相同的命令适用于两者:

((DIFF=($(date +%s -d 20120203)-$(date +%s -d 20120115))/86400))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。