有命令行日历计算器吗?

有命令行日历计算器吗?

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

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

答案1

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

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

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

命令:

 date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"

将显示:

 DATE: 1987-11-21
 TIME: 13:36:16

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

 date -v1m -v+1y

将显示:

 Sun Jan  4 04:15:24 GMT 1998

当前时间为 1997 年 8 月 4 日星期一 04:15:24 BST。

命令:

 date -v1d -v3m -v0y -v-1d

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

 Tue Feb 29 03:18:00 GMT 2000

因此将执行以下命令:

 date -v30d -v3m -v0y -v-1m

因为不存在二月三十号这个日期。

命令:

 date -v1d -v+1m -v-1d -v-fri

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

 Fri Aug 29 04:31:11 BST 1997

当前时间为 1997 年 8 月 4 日星期一 04:31:11 BST。

命令:

 date 0613162785

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

 date "+%m%d%H%M%Y.%S"

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

命令:

 date 1432

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

最后命令:

 date -j -f "%a %b %d %T %Z %Y" "`date`" "+%s"

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

答案2

正如 Zoredache 所说,您可以使用任何脚本编程语言轻松实现它。

以下是 Ruby 中的一个例子

 > irb
 1.9.3-p286 :001 > require 'date'
  => true
 1.9.3-p286 :014 > Date.new(2012,11,1) - Date.new(2012,1,2)                                                                                                                                                                                                                    
  => (304/1) 
 1.9.3-p286 :015 > Date.new(2012,11,1) + 10
  => #<Date: 2012-11-11 ((2456243j,0s,0n),+0s,2299161j)> 
 1.9.3-p286 :016 > Date.new(2012,11,1) - 205
  => #<Date: 2012-04-10 ((2456028j,0s,0n),+0s,2299161j)> 

答案3

至于自定义输入和输出格式,请查看日期工具。它提供了dadd执行日期(加|减)日期间隔计算的命令:

$ dadd -i '%B %d %Y' 'November 1 2012' +3w
2012-11-22
$ dadd 2012-11-22 -3w -f '%B %d %Y'
November 01 2012

-i|--input-format选项适用于所有工具并支持大多数strptime(3)说明符。选项也一样-f|--format

免责声明:我是该工具集的作者。

相关内容