在Linux中如何进行日期加减

时间:2019-11-20 08:53:39  来源:igfitidea点击:

在Linux shell中,如何显示当前的日期和时间?
在Linux上如何使用date命令设置日期和时间。
在shell脚本中,如何对日期进行加减?

在Linux上查看当前日期

使用date命令

date

输出示例:

Sun Jan 17 03:41:27 EST 2017

指定TZ显示美国时间,不更改本地时间:

TZ='America/Los_Angeles' date

输出示例:

Sun Jan 17 00:42:11 PST

查看2天前的日期和时间:

date --date='2 days ago'

输出示例:

Fri Jan 15 03:43:02 EST 

查看3月零两天前的日期:

date --date='3 months 2 day'

Linux shell日期加法

语法如下所示,以在给定日期上添加天数并在GNU/Linux日期版本上找到新的日期/时间:

将天数添加到日期中:

date -d="YYYY-MM-DD+N days"
 
date --date="YYYY-MM-DD+N days"
 
TZ='TIME_ZONE_HERE' date -d="YYYY-MM-DD+N days"

示例,在2017-03-14的基础上添加20天:

date -d "2017-03-14+20 days"
 
## 设置美国时间
TZ='America/New_York' date -d "2017-03-14+20 days"

## 在shell中计算日期
base="2017/07/29"
days="20 days"
echo "shell date $(date -d "${base}+${days}")"

Linux日期减法

只需将加号改成减号:

date -d "YYYY-MM-DD-N days"
date -d "2017-08-15-5 days"
Thu Aug 10 00:00:00 EDT 2017

在macOS或BSD上的说明

BSD系列操作系统上的语法略有不同:

date -v {format}
 
## 查看当前日期
date 
 
## macOS / FreeBSD 在当前日期上加上2天
date -v +2d
 
## macOS / FreeBSD / OpenBSD / NetBSD系统中,在当前日期上减去4天
date -v -4d

在macOS/BSD UNIX中进行日期加减

语法如下:

date -j -v +Nd -f "%Y-%m-%d" "YYYY-mm-dd" +%Y-%m-%d

将20天添加到2017年8月15日:

date -j -v +20d -f "%Y-%m-%d" "2017-08-15" +%Y-%m-%d

从2017年8月20日减去10天:

days="10d"
my_date="2017-08-20"
date -j -v -${days} -f "%Y-%m-%d" "${my_date}" +%Y-%m-%d