Linux中的 date 使用

Posted HaydenGuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中的 date 使用相关的知识,希望对你有一定的参考价值。

01. 日期格式字符串列表

%H 小时(以00-23来表示)。 
%I 小时(以01-12来表示)。 
%K 小时(以0-23来表示)。 
%l 小时(以0-12来表示)。 
%M 分钟(以00-59来表示)。 
%P AM或PM。 
%r 时间(含时分秒,小时以12小时AM/PM来表示)。 
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 
%S 秒(以本地的惯用法来表示)。 
%T 时间(含时分秒,小时以24小时制来表示)。 
%X 时间(以本地的惯用法来表示)。 
%Z 市区。 
%a 星期的缩写。 
%A 星期的完整名称。 
%b 月份英文名的缩写。 
%B 月份的完整英文名称。 
%c 日期与时间。只输入date指令也会显示同样的结果。 
%d 日期(以01-31来表示)。 
%D 日期(含年月日)。 
%j 该年中的第几天。 
%m 月份(以01-12来表示)。 
%U 该年中的周数。 
%w 该周的天数,0代表周日,1代表周一,异词类推。 
%x 日期(以本地的惯用法来表示)。 
%y 年份(以00-99来表示)。 
%Y 年份(以四位数来表示)。 
%n 在显示时,插入新的一行。 
%t 在显示时,插入tab。 
MM 月份(必要) 
DD 日期(必要) 
hh 小时(必要) 
mm 分钟(必要)
ss 秒(选择性)

 

02. 实例

格式化输出:
date +"%Y-%m-%d" 
2015-12-07

输出昨天日期:
date -d "1 day ago" +"%Y-%m-%d"
2015-11-19

2秒后输出:
date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2015-11-20 14:21.31

传说中的 1234567890 秒:
date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

普通转格式:
date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

apache格式转换:
date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

格式转换后时间:
date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37

加减操作:
date +%Y%m%d 
20190530 
#显示前天年月日

date -d "+1 day" +%Y%m%d 
20190531
#显示前一天的日期

date -d "-1 day" +%Y%m%d
20190529 
#显示后一天的日期

date -d "-1 month" +%Y%m%d 
20190430
#显示上一月的日期

date -d "+1 month" +%Y%m%d
20190630
#显示下一月的日期

date -d "-1 year" +%Y%m%d 
20180530
#显示前一年的日期

date -d "+1 year" +%Y%m%d 
20200530
#显示下一年的日期

date -d "last month" +%Y-%m
2019-04
#显示上个月的日期

date "+%Y-%m-%d"或者date "+%F"
2019-05-30
#显示当天

date "+%Y-%m-%d"-%H:%M:%S
2019-05-30-16:24:11
#显示当天具体的时分秒

date "+%Y-%m-%d" --date="-1 day"
2019-05-29
#显示前一天日期

date "+%Y-%m-%d" --date="+1 day"
2019-05-31
#显示后一天日期

date +%Y-%m-01
2019-05-01
#显示这个月第一天

date -d "last month" +%Y-%m-"20"
2019-04-20
#显示上个月第二十天

date -d "last month" +%Y-%m
2019-04
#显示上个月

date +"%Y-%m"
2019-05
#显示这个月

date +%H:%M:%S:%N | awk -F: {print $1}
16
#小时

date +%H:%M:%S:%N | awk -F: {print $2}
26
#分钟

date +%H:%M:%S:%N | awk -F: {print $3}
44
#秒

date +%H:%M:%S:%N | awk -F: {print $4}
498109823
#毫秒

date -s 20091112 
# 设日期

date -s 18:30:50 
# 设时间

date -d "7 days ago" +%Y%m%d 
# 7天前日期

date -d "5 minute ago" +%H:%M 
# 5分钟前时间

date -d "1 month ago" +%Y%m%d 
# 一个月前

date -d 1 days +%Y-%m-%d 
# 一天后

date -d 1 hours +%H:%M:%S 
# 一小时后

date +%Y-%m-%d -d 20110902 
# 日期格式转换

date +%Y-%m-%d_%X 
# 日期和时间

date +%N 
# 纳秒

 

03. 设定时间:

date -s 
#设置当前时间,只有root权限才能设置,其他只能查看

date -s 20120523 
#设置成20120523,这样会把具体时间设置成空00:00:00

date -s 01:01:01 
#设置具体时间,不会对日期做更改

date -s "01:01:01 2012-05-23" 
#这样可以设置全部时间

date -s "01:01:01 20120523" 
#这样可以设置全部时间

date -s "2012-05-23 01:01:01" 
#这样可以设置全部时间

date -s "20120523 01:01:01" 
#这样可以设置全部时间

 

04. 检查一组命令花费的时间:

#!/bin/bash 
start=$(date +%s) 
nmap man.linuxde.net &> /dev/null 
end=$(date +%s) 
difference=$(( end - start )) 
echo $difference seconds.

以上是关于Linux中的 date 使用的主要内容,如果未能解决你的问题,请参考以下文章

java 反射代码片段

Android 逆向Linux 文件权限 ( Linux 权限简介 | 系统权限 | 用户权限 | 匿名用户权限 | 读 | 写 | 执行 | 更改组 | 更改用户 | 粘滞 )(代码片段

linux中怎么查看mysql数据库版本

shell 脚本 片段

js常用代码片段(更新中)

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?