基本用法
date [选项] 显示时间格式(以+开头,后面接格式)
date可以用来显示和设定系统的日期和时间。
使用说明:
命令参数:
-d, –date=STRING 显示STRING指定的时间
-f, –file=DATEFILE 类似–date参数显示DATEFILE文件中的每行时间
-r, –reference=FILE 显示文件的最后修改时间
-R, –rfc-2822 以RFC-2822兼容日期格式显示时间
-s, –set=STRING 设置时间为STRING
-u, –utc, –universal 显示或设定为Coordinated Universal Time时间格式
#date //显示当前日期
#date -s //设置当前时间,只有root权限才能设置,其他只能查看。
#date -s 20061010 //设置成20061010,这样会把具体时间设置成空00:00:00
#date -s 12:23:23 //设置具体时间,不会对日期做更改
#date -s “12:12:23 2006-10-10″ //这样可以设置全部时间
时间显示参数
不加任何参数
root@ubuntu:~# date
Sun Sep 18 00:20:35 PDT 2016
直接打印可读性很差,因此要各种参数组合
当添加%
表示时间的显示格式,当不加%
则表示时间的设定。只有类似root用户才有权限设定系统时间。
并且当修改了系统时间后,需要用clock -w
将系统时间写入CMOS,以防止下次启动时间不对。
时间格式为MMDDhhmm[[CC]YY][.ss]
,其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
时间显示格式
•%% 字符%
•%a 星期的缩写(Sun..Sat)
•%A 星期的完整名称 (Sunday..Saturday)
•%b 月份的缩写(Jan..Dec)
•%B 月份的完整名称(January..December)
•%c 日期时间(Sat Nov 04 12:02:33 EST 1989)
•%C 世纪(年份除100后去整) [00-99]
•%d 一个月的第几天(01..31)
•%D 日期(mm/dd/yy)
•%e 一个月的第几天 ( 1..31)
•%F 日期,同%Y-%m-%d
•%g 年份(yy)
•%G 年份(yyyy)
•%h 同%b
•%H 小时(00..23)
•%I 小时(01..12)
•%j 一年的第几天(001..366)
•%k 小时( 0..23)
•%l 小时( 1..12)
•%m 月份(01..12)
•%M 分钟(00..59)
•%n 换行
•%N 纳秒(000000000..999999999)
•%p AM or PM
•%P am or pm
•%r 12小时制时间(hh:mm:ss [AP]M)
•%R 24小时制时间(hh:mm)
•%s 从00:00:00 1970-01-01 UTC开始的秒数
•%S 秒(00..60)
•%t 制表符
•%T 24小时制时间(hh:mm:ss)
•%u 一周的第几天(1..7); 1 表示星期一
•%U 一年的第几周,周日为每周的第一天(00..53)
•%V 一年的第几周,周一为每周的第一天 (01..53)
•%w 一周的第几天 (0..6); 0 代表周日
•%W 一年的第几周,周一为每周的第一天(00..53)
•%x 日期(mm/dd/yy)
•%X 时间(%H:%M:%S)
•%y 年份(00..99)
•%Y 年份 (1970…)
•%z RFC-2822 风格数字格式时区(-0500)
•%Z 时区(e.g., EDT), 无法确定时区则为空
root@ubuntu:~# date +"%H%M%S"
003528
root@ubuntu:~# date +"%H-%M-%S"
00-36-39
root@ubuntu:~# date +"%H:%M:%S"
00:37:08
root@ubuntu:~# date +"%H:%M:%S %Z"
00:37:38 PDT
root@ubuntu:~# date +"%H:%M:%S %t%Z"
00:37:44 PDT
root@ubuntu:~# date +"%H:%M:%S %n%Z"
00:37:51
PDT
root@ubuntu:~# date +"%I:%M:%S %p"
12:39:41 AM
root@ubuntu:~# date +"%A %B %d"
Sunday September 18
root@ubuntu:~# date +"%a %b %d"
Sun Sep 18
当希望把日期里的0去掉时,则可以在%
和参数名之间添加-
。
root@ubuntu:~# date '+%-H:%-M:%-S'
0:45:46
date -d详细用法
root@ubuntu:~# date
Sun Sep 18 01:11:45 PDT 2016
root@ubuntu:~# date -d next-day +%Y%m%d
20160919
root@ubuntu:~# date -d last-day +%Y%m%d
20160917
root@ubuntu:~# date -d yesterday +%Y%m%d
20160917
root@ubuntu:~# date -d tomorrow +%Y%m%d
20160919
root@ubuntu:~# date -d last-month +%Y%m
201608
root@ubuntu:~# date -d next-month +%Y%m
201610
root@ubuntu:~# date -d next-year +%Y
2017
date -d "x days ago" +%Y%m%d x用数字代替,如果需要几天前的直接写正数,如果要几天后的日期直接写负数即可; date -d "x weeks ago" +%Y%m%d x用数字代替,如果需要几周前的直接写正数,如果要几周后的日期直接写负数即可; date -d "x years ago" +%Y%m%d x用数字代替,如果需要几年前的直接写正数,如果要几年后的日期直接写负数即可;
修改时区
可以直接用tzselect
命令来修改时区,修改完时区后需要将TZ='Asia/Shanghai'; export TZ
写入到profile文件中
root@ubuntu:~# vi .profile
# ~/.profile:
executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
mesg n || true
TZ='Asia/Shanghai'; export TZ
root@ubuntu:~# logout
root@ubuntu:~# date
Sun Sep 18 16:20:06 CST 2016