gpt4 book ai didi

linux - 从通过 arg 提供的日期计算第二天日期的技术?

转载 作者:太空狗 更新时间:2023-10-29 11:23:47 26 4
gpt4 key购买 nike

我在解决这个问题时遇到了一些麻烦。

我有一个脚本,用于检查在脚本调用指定的日期后的第二天生成的日志文件。这是因为为指定日期的数据提取的文件要到后一天才会提取。当该 cron 在早上运行时,日志文件的文件名中将包含第二天的时间戳,而不是 arg 指定的日期。我需要保持 arg 不变,因为我们小组的标准惯例是仅指定数据引用的日期,而不是 cron 作业获取数据的日期。该日期(在此脚本中存储在 $NOW 中)在其他操作中用得相当多。

所以现在我正在做这个疯狂的嵌套条件事情(它确实有效但我认为它很可怕):

#Setup the date, and variables
TENANT=$1
DATE_ARRAY=(`echo $2 | sed -e 's/\// /g'`)
MONTH=(`echo ${DATE_ARRAY[0]}`)
DAY=(`echo ${DATE_ARRAY[1]}`)
YEAR=(`echo ${DATE_ARRAY[2]}`)
NOW=$YEAR$MONTH$DAY
...

# The next 15 lines or so will iterate the cron log date to the correct
# month or year if the load date is at the end of the month/year.
if [ "$DAY" -eq 28 ] && [ "$MONTH" -eq 02 ]; then
CRON_NOW=$(($NOW + 173))
elif [ "$DAY" -le 29 ]; then
CRON_NOW=$(($NOW + 1))
elif [ "$DAY" -eq 30 ]; then
if [ "$MONTH" -eq 04 ] || [ "$MONTH" -eq 06 ] || [ "$MONTH" -eq 09 ] || [ "$MONTH" -eq 11 ]; then
CRON_NOW=$(($NOW + 171))
else
CRON_NOW=$(($NOW + 1))
fi
elif [ "$DAY" -eq 31 ]; then
if [ "$MONTH" -eq 01 ] || [ "$MONTH" -eq 03 ] || [ "$MONTH" -eq 05 ] || [ "$MONTH" -eq 07 ] || [ "$MONTH" -eq 08 ] || [ "$MONTH" -eq 10 ]; then
CRON_NOW=$(($NOW + 170))
fi
if [ "$MONTH" -eq 12 ]; then
CRON_NOW=$(($NOW + 8870))
fi
fi

所以你可以看到我做了这个疯狂的工作,因为我不知道如何使用“日期”来显示指定日期的下几天。我觉得有一些抽象的很棒的方法可以用“日期”来做到这一点,但我只是不知道它,也无法从手册页中破译它。

我知道“date --date=xx/xx/xxxx”或“date --date=23 days ago”之类的。我想要更像“date --date=xx/xx/xxxx minus one day”的东西,因为我认为试图计算出它是多少天前和我将它向前迭代一天一样困难。

一如既往,非常感谢任何答案。这个网站震撼人心哟!-瑞安

最佳答案

这应该有效:

date --date="20 Feb 2010 1 day"

它返回:

Sun Feb 21 00:00:00 EST 2010

...这是给定日期后的一天。

关于linux - 从通过 arg 提供的日期计算第二天日期的技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2241480/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com