1 于日期和日间背景知识
UTC时间:翻译为协调世界时,需要由世界上精确的原子时钟来确定秒,并根据地球自转快慢进行闰秒的调节。理论上此时间为世界上最准确的时间。目前各国采用的标准时间。
GMT时间:翻译为格林尼治时间,由英国格林尼治天文台发布的时间。1960年之前作为世界标准时来使用。理论上正午12点为太阳经过横穿本初子午线的时间,但由于地球自转速度正在变慢,此时间会产生较大的时间误差。但对于日常生活来说GMT和UTC的实际误差并不太重要。
时区:地理上的概念,将地球上本初子午线两边的半球分别划分为12个时区。各个时区的时间根据世界标准时间进行调整。随地球自转方向,向东每过15度增加1个小时,反之向西每过15度减去1个小时。例如北京位于东8区,则当标准时间为某日00:00:00时,北京时间为早上08:00:00。
CST:这个缩写的理解比较多。如China stand time,Central stand time,甚至cuba stand time。
2 date 命令用法
语法命令如下:date [option...] [ +Format ]
2.1 选项部分
-d string 格式化string的时间
-f file 格式化file中每行的时间
-r file 显示文件的修改时间
-u 显示为UTC时间,中文系统默认为CST时间
-s string 将string设置为系统时间,为防止重启后系统从CMOS中重新读取,要使用clock -w将设置的时间写入硬件时钟。
2.2 格式部分
日期格式:%[aAbBcCdDeFgGhjmuUVwWxyY]
%Y 年份2013 %y 年份后两位 %C 年份前两位
%m 月份01-12
%d 日01-31 %e = %_d不带前导0,而是空格
%a 星期的缩写 %A 星期全写
%b 月份缩写 %B 月份全写
%g 周数 1..52
%j 年日数1-366
%D %m/%d/%y 同%x
%u 周日数1-7 %w 0-6
时间格式:%[ HIklMNpPrRsSTXzZ ]
%H : 小时00 .. 23 %k无前导0
%I 小时01... 12 %l 无前导0
%M 分钟00...59
%S 秒 00...60
%T %H:%M:%S的组合
%r 本地12小时制式显示时间,如`11:11:04 PM'
%X 本地24小时制式显示时间,如 23:13:48
%P am或pm
%s 19700101 凌晨起的秒数
%z 显示时区,东8区格式为 +0800
格式填充
除了采用格式参数来控制日期的格式,而可以用填充符号来控制格式,这个填充参数放在%后面使用
- 不填充
_ 用空格填充
0 用0填充
3 用法实例
3.1 设置系统时间
date -s "2013-01-30 13:59:55" +"%Y-%m-%d %H:%M:%S"
3.2 输出为指定日期
date +"%y/%m/%d" 格式化当前时间
date -d "2012-01-30" +"%y/%m/%d" 格式化指定时间
3.3 与时间戳互转
date -d "2012-01-30" +%s 日期转换为时间戳
date -d @1327852800 +%Y:%m:%d %H:%M:%S 时间戳转换为日期