我正在尝试使用 date 命令在 Unix 中显示特定日期,但我不知道如何显示除今天以外的日期。
例如,如果我试图显示July 4, 2011
我使用
$ date +"%B %d, %Y"
但我一直以这种格式获取今天的日期。我该如何更改它以显示我想要的日期?
答案1
如果您运行的是 Linux:
date +"%B %d, %Y" -d 2011-07-04
从man date
:
-d, --date=STRING
display time described by STRING, not 'now'
答案2
一般来说,date
不是用于该目的的工具(尽管某些实现,例如 GNU 日期可以将其作为非标准扩展)。
如果你想进行可移植的日期操作,你能做的最好的可能就是使用perl
(它几乎安装在每个非嵌入式 Unix 上)及其POSIX
模块的strftime
和mktime
函数。还有大量其他更友好的日期操作模块,perl
但默认情况下通常不会安装它们,至少在旧版本的perl
.
perl -MPOSIX -le 'print strftime "%B %d, %Y", @ARGV' 0 0 0 4 7 "$((2011 - 1900))"