linux - bash 按 yyyy-mm-dd 在 N 天内 bash 中 2 个日期之间的差异

标签 linux bash variables awk sh

我在 bash 中编写了一个很长的脚本,不知何故我能够以 yyyy-mm-dd 格式打印 2 个日期。

我的输出类似于 2019-12-30 和 2019-12-21

第一个日期始终是昨天的日期,我的输出不会打印日期函数,它只会打印日期值, 所以。我需要告诉 bash 这是一个日期并给我一个天数的差异。

#!/bin/bash
START=$(date --date=yesterday +%F)
END=$(date --date "2 days ago" +%F)
DIFF=$(( $END - $START ))

echo " $DIFF "

它只向我显示 85。我怎样才能得到像“1”这样的天数差异(2天前 - 昨天)

如果有人回答并提供一些解释,我将不胜感激

PS:我不知道 datediff 是否是预制的。 Linux的功能,我的centos 6里没有

最佳答案

扩展我的评论:

查看已接受的答案 Quickly calculate date differences

回答该问题的人编写了一个名为 datediff 的自定义函数:

$ datediff() {
    d1=$(date -d "$1" +%s)
    d2=$(date -d "$2" +%s)
    echo $(( (d1 - d2) / 86400 )) days
}

我们可以使用相同的函数来比较问题中的 2 个日期:

$ START=$(date --date=yesterday +%F)
$ END=$(date --date "2 days ago" +%F)
$ echo "${START} : ${END}"
2019-12-30 : 2019-12-29
$ datediff "${START}" "${END}"
1 days

关于linux - bash 按 yyyy-mm-dd 在 N 天内 bash 中 2 个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59548057/

相关文章:

linux - 如何移动将 cat 输出更改为列

linux - 如何在 CLI 中列出所有 EBS 卷

python - 使用文件夹名称作为文本文件中的一列

javascript - If语句在javascript中只检查一次变量值

variables - Ansible - 在运行时定义库存

java - Spring Boot RequestMapping 不适用于 Linux Fedora 26

linux - 更改/etc/fstab 的位置

bash - 如何执行到K8s pods 中,但从外部使用bash_profile?

java - 全局变量的使用

linux - 使用execve的困难