开发者社区> 问答> 正文

使用Shell查找两个日期后的天数

我想查找两个给定日期(分别为2017年8月25日和2017年9月5日)的天数。

我的剧本:

start='2017-08-25';
end='2017-09-05';
ndays=(strtotime($end)- strtotime($start))/24/3600;
echo $ndays

运行此脚本时,出现以下错误消息。

Line 3: syntax error near unexpected token `('

期望输出值:

10

展开
收起
祖安文状元 2020-01-05 19:09:19 479 0
1 条回答
写回答
取消 提交回答
  • 据我所知,没有任何外壳可以使用任何工具来处理日期。至少,您需要一个外部工具date来将日期转换为中间形式,例如自某个固定时间点以来的秒数(Unix使用1970年1月1日),然后在处理这些值之前对这些值进行计算结果进一步。

    假设使用dateLinux标记中的GNU ,您将执行以下操作

    start='2017-08-25'
    end='2017-09-05'
    
    start_seconds=$(date +%s --date "$start" --utc)
    end_seconds=$(date +%s --date "$end" --utc)
    
    ndays=$(( (end_seconds - start_seconds) / 24 / 3600 ));
    echo $ndays
    
    

    请注意,由于大多数外壳程序仅支持整数算术运算,因此不会提供确切的天数。

    2020-01-05 19:09:27
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Shell 脚本速查手册 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载