【问题标题】:How to get yesterday date in Unix [duplicate]如何在Unix中获取昨天的日期[重复]
【发布时间】:2015-09-03 06:35:37
【问题描述】:

我想以YYYY-MM-DD 格式获取昨天的日期。

在 bash 中,我可以使用 date '+%F' -d "1 day ago" 来获取它。它的输出为2015-09-02

如何在ksh 中获得相同的结果?

【问题讨论】:

  • 对我来说,ksh 中的 2015-09-02 也一样。
  • 你也可以试试:date '+%F' -d "yesterday"
  • @insanity,uname -a 的帖子输出。
  • 当您使用 Korn shell 时,您是在与使用 Bash 时相同的系统上,还是在不同的系统上?使用 Linux 上的 Bash,您就有了 GNU CoreUtils,date 就是由此而来。如果您在不同的平台上,例如 Solaris 或 Mac OS X,那么您将获得不同的date 程序。您的问题是“我怎样才能让非 GNU date 产生与 GNU date 相同的答案?”最简单的答案可能是“在这台机器上安装 GNU CoreUtils”。如果您在同一台机器上,您将使用相同的date 程序,根本不会遇到这个问题。
  • 同意:date 命令的功能与您使用的 shell 无关。

标签: shell unix ksh


【解决方案1】:

Kshprintf 支持日期时间操作:

# echo ${.sh.version}
Version AJM 93u+ 2012-08-01
# printf '%(%Y-%m-%d)T\n' today
2015-09-03
# printf '%(%Y-%m-%d)T\n' yesterday
2015-09-02
# printf '%(%Y-%m-%d)T\n' '5 days ago'
2015-08-29
#

【讨论】:

  • 有趣。它对这种算术的解释存在一些限制; day before yesterday 无法识别。在 GNU date 中,你也必须以不同的方式表达,但是……仍然很有趣。
猜你喜欢
  • 1970-01-01
  • 2015-08-04
  • 2012-07-10
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多