有命令行日历计算器吗?

How*_*ard 5 linux unix bsd command-line

是否有提供这些功能的命令行日历计算?

  • 日期(加|减)日期间隔计算
  • 用户指定的输入输出格式

Ala*_*tko 7

date命令将为您完成大部分工作。

例如,11 月 1 日加 3 周是 date -j -v+3w -f"%m/%d/%y" "11/01/10"

以下是手册页中的一些示例:

命令:

 date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
Run Code Online (Sandbox Code Playgroud)

将显示:

 DATE: 1987-11-21
 TIME: 13:36:16
Run Code Online (Sandbox Code Playgroud)

在欧洲/伦敦时区,命令:

 date -v1m -v+1y
Run Code Online (Sandbox Code Playgroud)

将显示:

 Sun Jan  4 04:15:24 GMT 1998
Run Code Online (Sandbox Code Playgroud)

现在是 1997 年 8 月 4 日星期一 04:15:24 BST。

命令:

 date -v1d -v3m -v0y -v-1d
Run Code Online (Sandbox Code Playgroud)

将显示 2000 年二月的最后一天:

 Tue Feb 29 03:18:00 GMT 2000
Run Code Online (Sandbox Code Playgroud)

所以会执行命令:

 date -v30d -v3m -v0y -v-1m
Run Code Online (Sandbox Code Playgroud)

因为没有 2 月 30 日这样的日期。

命令:

 date -v1d -v+1m -v-1d -v-fri
Run Code Online (Sandbox Code Playgroud)

将显示该月的最后一个星期五:

 Fri Aug 29 04:31:11 BST 1997
Run Code Online (Sandbox Code Playgroud)

现在是 1997 年 8 月 4 日星期一 04:31:11 BST。

命令:

 date 0613162785
Run Code Online (Sandbox Code Playgroud)

将日期设置为“1985 年 6 月 13 日下午 4:27”。

 date "+%m%d%H%M%Y.%S"
Run Code Online (Sandbox Code Playgroud)

可以在一台机器上打印出适合在另一台机器上设置的日期。

命令:

 date 1432
Run Code Online (Sandbox Code Playgroud)

将时间设置为下午 2:32,而不修改日期。

最后命令:

 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"
Run Code Online (Sandbox Code Playgroud)

可用于解析日期的输出并以纪元时间表示。

  • 我认为您的示例主要仅用于 BSD `date`。`-v` 选项不适用于 GNU 日期(至少对于 8.5 版)。 (3认同)
  • 好点子。GNU date 有 --date 选项和不同的语法。 (2认同)