【问题标题】:command date script shell bsh/ksh命令日期脚本 shell bsh/ksh
【发布时间】:2012-08-03 10:07:40
【问题描述】:

我需要帮助。 我制作了一个 shell 脚本,您以 YYYYMMDD 格式传递早于 3 天的日期,并告诉我它是否正确。 我的问题是。我可以减去 3 天的日期命令吗? 谢谢。

【问题讨论】:

  • 你想使用 date 命令从给定的天数中减去 3 天吗?

标签: bash shell date scripting solaris


【解决方案1】:

你可以测试一下:

 DATE="20120803"
 date -d @$(( `date -d "$DATE" +%s` - (3*24*60*60) ))

【讨论】:

  • 抱歉,但是 ... 日期:opción no permitida -- d sintaxis:日期 [-u] ddmmHHMM[[cc]aa][.SS] 日期 [-u] [+format] 日期 - a [-]sss[.fff] 日期:opción no permitida -- d sintaxis:日期 [-u] ddmmHHMM[[cc]aa][.SS] 日期 [-u] [+format] 日期 -a [-] sss[.fff]
  • @canredondocity 如果您的问题与 Linux 无关,则不应使用 linux 标签。
【解决方案2】:

对于花哨的解决方案:

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

【讨论】:

  • 日期:opción no permitida -- d sintaxis:日期 [-u] ddmmHHMM[[cc]aa][.SS] 日期 [-u] [+format] 日期 -a [-]sss [.fff] 日期:opción no permitida -- d sintaxis:日期 [-u] ddmmHHMM[[cc]aa][.SS] 日期 [-u] [+format] 日期 -a [-]sss[.fff]太早了:(
  • 在这里工作。请提供有意义的错误描述,包括您的输入。
【解决方案3】:

虽然您可以使用 date 命令来执行此操作(请参阅 Guillame's excellent answer),但可能值得考虑使用 Perl 等脚本语言来更有效地执行更复杂的操作。

例如请参阅this SO 答案,使用Perl 和DateTime.pm 模块:

use DateTime;
my $date = DateTime->now;
$date->subtract(days => 3);
print $date->ymd;

【讨论】:

  • 使用:不反对我的:不反对
  • @canredondocity 这是 perl,而不是 shell 脚本。你需要 DateTime.pm 模块。
猜你喜欢
  • 1970-01-01
  • 2014-06-05
  • 2019-03-08
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2020-11-30
  • 2016-11-28
相关资源
最近更新 更多