[转帖]Linux小技巧:获取前一天日期、前一个月日期

linux,技巧,获取,前一天,日期,一个月 · 浏览次数 : 0

小编点评

**Linux 前一天日期获取方法** **1. 使用 `date` 命令** * `date +"%Y%m%d"`:获取当前日期的格式为 YYYY-MM-DD。 * `date -d '1 day ago'`:获取昨天日期的格式为 YYYY-MM-DD。 * `date -d '2 days ago'`:获取前天日期的格式为 YYYY-MM-DD。 * `date -d '-1 day ago'`:获取前一天日期的格式为 YYYY-MM-DD。 * `date -d '+1 month ago'`:获取上个月日期的格式为 YYYY-MM-DD。 * `date -d '-2 month ago'`:获取上個月日期的格式为 YYYY-MM-DD。 * `date -d '+1 year ago'`:获取当年日期的格式为 YYYY-MM-DD。 **2. 使用 `-d` 命令选项** * `date -d "1 month ago"`:获取上個月日期。 * `date -d "2 months ago"`:获取前個月日期。 * `date -d "-1 day"`:获取昨天日期。 * `date -d "-2 days"`:获取前天日期。 * `date -d "+1 month"`:获取下個月日期。 * `date -d "-1 month"`:获取上個月日期。 * `date -d "+1 year"`:获取当年日期。 **3. 使用 `os_name`变量** * `date -v -1d +%Y-%m-%d`:获取前一天的日期。 * `date -v +1d +%Y-%m-%d`:获取后一天的日期。 **4. 使用 `/bin/bash` 命令** * `pre_date=$(date +%Y-%m-%d --date='-1 day')`:获取 1 天前的日期。 * `pre_date=$(date -v -1d +%Y-%m-%d)`:获取 1 天前的日期。

正文

最近脚本需要获取Linux前一天时间格式,用于设置日志文件名,网上查了查资料,这里记录一下。

1.date命令

1.1 date命令使用格式

 date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]] 

说明 : date 能用来显示或设定系统的日期和时间,在显示方面,使用者能设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下 : 

1.2 时间方面 : 

% : 印出 
% %n : 下一行 
%t : 跳格 
%H : 小时(00..23) 
%I : 小时(01..12) 
%k : 小时(0..23) 
%l : 小时(1..12) 
%M : 分钟(00..59) 
%p : 显示本地 AM 或 PM 
%r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) 
%s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 %S : 秒(00..61) 
%T : 直接显示时间 (24 小时制) 
%X : 相当于 %H:%M:%S 
%Z : 显示时区 

1.3 日期方面 

%a : 星期几 (Sun..Sat) 
%A : 星期几 (Sunday..Saturday) 
%b : 月份 (Jan..Dec) 
%B : 月份 (January..December) 
%c : 直接显示日期和时间 
%d : 日 (01..31) 
%D : 直接显示日期 (mm/dd/yy) 
%h : 同 %b 
%j : 一年中的第几天 (001..366) 
%m : 月份 (01..12) 
%U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形) 
%w : 一周中的第几天 (0..6) 
%W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形) 
%x : 直接显示日期 (mm/dd/yy) 
%y : 年份的最后两位数字 (00.99) 
%Y : 完整年份 (0000..9999) 

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss], 
其中 MM 为月份, 
DD 为日, 
hh 为小时, 
mm 为分钟, 
CC 为年份前两位数字, 
YY 为年份后两位数字, 
ss 为秒数 

1.4 其他

-d datestr : 显示 datestr 中所设定的时间 (非系统时间) 
--help : 显示辅助讯息 
-s datestr : 将系统时间设为 datestr 中所设定的时间 
-u : 显示目前的格林威治时间 
--version : 显示版本编号 

 

1.2 例如

使用date -d 选项:

   date  +"%Y%m%d" -d  "+n days"         今天的后n天日期  

显示当前日期是

DATE=`date +%Y%m%d`  +号后面是定义格式为年月日

显示前一天为

DATE1=`date -d '1 days ago' +%Y%m%d` 加-d参数可以设置与当前日期的计算时间,同样,前2天为'2 days ago',去掉ago则为当前日期之后多少天

 

2.Linux下

前一天的日期

date -d "1 day ago" +"%y%m%d"

前一个月的日期

date -d "1 month ago" +"%y%m%d"

类似的还有

date -d "-1 day ago 1 month ago" +"%y%m%d"

date -d "1 day ago -1 year ago 1 month ago" +"%y%m%d"

下面是SHELL的例子:

DAYDEL=`date -d "1 month ago" +%m%d`   //一个月前的日期

echo $DAYDEL

 

在Linux中可以通过date命令获取昨天、明天、上个月、下个月、上一年和下一年

  1. # 获取昨天
  2. date -d 'yesterday' # 或 date -d 'last day'
  3. # 获取明天
  4. date -d 'tomorrow' # 或 date -d 'next day'
  5. # 获取上个月
  6. date -d 'last month'
  7. # 获取下个月
  8. date -d 'next month'
  9. # 获取上一年
  10. date -d ’last year'
  11. # 获取下一年
  12. date -d 'next year'

 

此外你可以获取多天前,多天后,多个月前,多个月后,多年前或多年后

  1. # 三年前
  2. date -d '3 year ago'
  3. # 五年后
  4. date -d '-5 year ago'
  5. # 两天后
  6. date -d '-2 day ago'
  7. # 一个月前
  8. date -d '1 month ago'

 

3. MAC下

获取前一天的日期

date -v -1d +%Y-%m-%d

获取后一天的日期

date -v +1d +%Y-%m-%d

4.根据OS平台获取前一天的日期

  1. #!/bin/bash
  2. pre_date=0
  3. os_name=$(uname -s)
  4. if [[ "$os_name" == "Linux" ]]; then
  5. #statements
  6. pre_date=$(date +%Y-%m-%d --date='-1 day')
  7. elif [[ "$os_name" == "Darwin" ]]; then
  8. pre_date=$(date -v -1d +%Y-%m-%d)
  9. fi

参考

https://my.oschina.net/aiguozhe/blog/57835

https://www.jianshu.com/p/f750879120e4

https://blog.51cto.com/jerrybear/393097

 

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux23501 人正在系统学习中

与[转帖]Linux小技巧:获取前一天日期、前一个月日期相似的内容: