date
按格式显示时间或设置系统时间
date [选项] ... [+格式]
date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
选项 :
- -d, --date=STRING
显示STRING指示的时间,STRING是比较随性的可读的字符串,比如说“2012-06-16 18:31:00”或者“next Thursday”,这个字符串通常包含日历时间、时间、星期、日期、相对时间,相对日期或者数字。- -f, --file=DATEFILE
和-d类似,对文件DATEFILE里的每一行做date -d操作- -ITIMESPEC, --iso-8601[=TIMESPEC]
以ISO 8601格式显示时间/日期。TIMESPEC=date'只显示日期,hours',minutes', orseconds'显示相应的精度. --iso-8601不带TIMESPEC时等同于`date'.- -r, --reference=FILE
显示文件FILE最后修改的时间- -R, --rfc-822
输出与RFC-822相适应的时间字符串- -s, --set=STRING
设置STRING指定的时间- -u, --utc, --universal
输出或者设置UTC时间
| 格式 | 说明 | 实例 |
|---|---|---|
| %a | 缩写的星期名 | Thu |
| %A | 全星期名 | Thursday |
| %b | 缩写的月名 | Aug |
| %B | 全月名 | August |
| %c | 日期和时间 | Thu Aug 23 14:55:02 2001 |
| %C | 年/100 [00,99] | 20 |
| %d | 十进制表示的每月的第几天 [01,31] | 16 |
| %D | 月/天/年 [m%/d%/y%] | 06/16/12 |
| %e | 十进制表示的每月的第几天 ,一位数前加空格[1,31] | 10 |
| %F | 年-月-日 [Y%-m%-d%] | 2012-06-16 |
| %g | ISO 8601使用基于周的年的后两位数字 | 12 |
| %G | ISO 8601使用基于周的年 | 2012 |
| %h | 简写的月份名 ,与%b相同 | Aug |
| %H | 24小时制的小时 [00,23] | 14 |
| %I | 12小时制的小时 [01,12] | 02 |
| %j | 每年的第几天 [001,366] | 235 |
| %k | 24小时制的小时 [0,23] | 5 |
| %l | 12小时制的小时 [1,12] | 5 |
| %m | 十进制的月 [01,12] | 08 |
| %M | 分钟 [00,59] | 55 |
| %n | 换行符 | |
| %N | 十亿分之一秒,纳秒 [000000000,999999999] | 000000001 |
| %p | AM/PM | PM |
| %P | am/pm | pm |
| %r | 本地时间:(12时制) | 11:01:23 AM |
| %R | 与“%H:%M”相同 | 11:01 |
| %s | 自'00:00:00 1970-01-01 UTC' 的秒数 | 1339819819 |
| %S | 秒 [00,60] | 02 |
| %t | 水平制表符 | |
| %T | 与“%H:%M:%S”相同 | 11:01:23 |
| %u | ISO 8601的星期,星期一为1,[1,7] | 2 |
| %U | 周数 ,以周日为一周开始 [00,53] | 33 |
| %V | ISO 8601周数 [01,53] | 07 |
| %w | 星期,星期天为0. [0,6] | 4 |
| %W | 周数,以星期一为一周开始 [00,53] | 34 |
| %x | 标准日期 | 06/16/12 |
| %X | 标准时间 | 14:55:02 |
| %y | 年份的后两位数字 [00,99] | 12 |
| %Y | 年 | 2012 |
| %z | ISO 8601格式的UTC偏移量 | -0500 |
| %Z | 时区名 | EST |
| %% | 百分号 | % |
若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
举例1
date # 以默认格式显示当前日期
date -d "1 day" # 以默认格式显示一天后的日期(还可以 second,minute,..直到year,可以加s表示复数)
date -d "1970-01-01 UTC 1128621784 seconds" # 以默认格式显示从1970-01-01 UTC起后1128621784秒的日期
date -d "3 day ago" +%Y%m%d # 以指定格式显示3天前的日期
date -d "1 month" +%Y-%m-%d # 以指定格式显示一个月后的日期
date -d "1 month" +%s # 以指定格式显示一个月后的日期(此格式为从1970年1月1日00:00:00到目前经历的秒数,%S为当前的秒数(0~59))
date -d "1970-01-01 CST 1 second" +%s # 显示从1970-01-01 CST起1秒后的秒数(-28799,注意时区"CST")
date -d "2 hours" # 2小时前
date -d "1 minutes" # 1分钟前
date -d "2 seconds" # 2秒钟前
date -d "20120616" +%s # 以指定格式显示日期
将时间戳转换成date
#date -d '1970-01-01 UTC 1199116800 seconds'
2008年 01月 01日 星期二 00:00:00 CST
#export LANG=en
#date -d '19700101 UTC 1199116800 seconds'
Tue Jan 1 00:00:00 CST 2008mi
举例2:
$ date +%Z # 显示时区
# CST
$ date +%C # 显示世纪
# 20
====设置====
$ date 022209102005.46 #月 日 时 分 年. 秒 # 设置时间为: 2005年02月22日09:10:46
# 2月22 09:10:46 CST 2005
$ date -s "+3 hours" # 将时间增加3小时
# 2月22 09:46:14 CST 2005
$ date -s "-40 minutes" # 将时间减少40分钟
# 2月22 09:06:35 CST 2005
$ date -s "+1 year" # 时间增加1年
# 2月22 09:14:55 CST 2006
$ date -s "-1 year" # 时间减少一年
# 2月22 09:15:02 CST 2005
====按日期显示====
$ date -d "+1 year"
# 2月22 09:57:46 CST 2006
$ date -d "-1 month"
# 1月22 09:49:08 CST 2005
$ date -d "-1 month" +%s
# 1106358557
$ date -d "7 days ago" # 显示7天前的时间
# 2月15 09:16:09 CST 2005
$ date -d "7 days ago" +%s # 显示7天前时间的秒值
# 1108430178
$ date -d "7 days" # 显示7天后时间的秒值
# 3月 1 09:17:11 CST 2005
$ date -d "7 days" +%s # 显示7天后时间的秒值
#1109639824
==============
$ date # 显示当前系统时间和日期
$ date +%c # 完整的日期时间显示
#2005年02月22日 星期二 09时32分19秒
$ date -u # 以格林威治标准时间显示目前时间和日期
# 2月22 01:38:20 UTC 2005
$ date +%x # 以当地习惯显示日期
# 2005年02月22日
$ date +%D # 以mm/dd/yy格式显示系统日期
# 02/22/05
$ date +%j # 今年第几天
# 053
$ date +%U # 今年第几周
# 08
把时间转成秒
$date -d "20061206 07:08" +%s
# 1165360080
把秒转换成时间
$ date
# 2006年07月06日 星期四11:57:18 CST
$ date -d "now" +%s
# 1152158238
$ date -d "19700101 1152158238 seconds UTC"
# 2006年07月06日 星期四11:57:18 CST
$ date -d "@1152158238"












网友评论