-2

在 hp-ux 中,因为没有可用的 GNU date,即命令的-d-s选项date不可用。我如何找到两个给定日期之间的差异(就像我们在 Solaris 或 bash shell 中所做的那样)?

4

1 回答 1

0

实际上有很多解决方案可以通过谷歌找到,但这是我偶然发现的一个,并且喜欢它的简洁性您将ansi_dn在两个日期都使用它的功能并计算差异。

diff_dates.sh

#!/bin/ksh

. ./ansi_dn.sh

date_to="$1"
date_from="$2"

echo $((
      $(ansi_dn \
        $(echo "${date_to}"   | cut -d/ -f3) \
        $(echo "${date_to}"   | cut -d/ -f2) \
        $(echo "${date_to}"   | cut -d/ -f1) \
      )
    - $(ansi_dn \
        $(echo "${date_from}" | cut -d/ -f3) \
        $(echo "${date_from}" | cut -d/ -f2) \
        $(echo "${date_from}" | cut -d/ -f1) \
      )
))

(如果你已经在单独的变量中有两个日期的年、月和日cut,那么显然不需要噩梦了。)

例子:

$ ./diff_dates.sh 08/05/2013 01/01/1939
27156

让我们用 GNU 验证正确性date

$ echo $(( ( $(date -d 2013-05-08 +%s) - $(date -d 1939-01-01 +%s) + 43200 ) / 86400))
27156
于 2013-05-08T12:38:46.410 回答