【发布时间】:2012-08-03 10:07:40
【问题描述】:
我需要帮助。 我制作了一个 shell 脚本,您以 YYYYMMDD 格式传递早于 3 天的日期,并告诉我它是否正确。 我的问题是。我可以减去 3 天的日期命令吗? 谢谢。
【问题讨论】:
-
你想使用 date 命令从给定的天数中减去 3 天吗?
标签: bash shell date scripting solaris
我需要帮助。 我制作了一个 shell 脚本,您以 YYYYMMDD 格式传递早于 3 天的日期,并告诉我它是否正确。 我的问题是。我可以减去 3 天的日期命令吗? 谢谢。
【问题讨论】:
标签: bash shell date scripting solaris
你可以测试一下:
DATE="20120803"
date -d @$(( `date -d "$DATE" +%s` - (3*24*60*60) ))
【讨论】:
对于花哨的解决方案:
INPUT="20120803"
INPUT_SECONDS=$(date -d "$INPUT" +%s)
THREEDAYSAGO_SECONDS=$(date -d "3 days ago" "+%s")
if [ $INPUT_SECONDS -lt $THREEDAYSAGO_SECONDS ]; then
echo "too early :("
fi
【讨论】:
虽然您可以使用 date 命令来执行此操作(请参阅 Guillame's excellent answer),但可能值得考虑使用 Perl 等脚本语言来更有效地执行更复杂的操作。
例如请参阅this SO 答案,使用Perl 和DateTime.pm 模块:
use DateTime;
my $date = DateTime->now;
$date->subtract(days => 3);
print $date->ymd;
【讨论】: