玩转日期和时间, date 命令:

玩转日期和时间, date 命令:
日期及时间相关的事情,就在date 命令中。
date --help, 是帮助.
甲: date 的基本描述
----------------------------------------
[root@hjj ~]# date
Fri Nov  7 14:15:06 CST 2014
----------------------------------------
返回当前时间星期几,年月日,时分秒,时区
每一部分还可以单独显示
----------------------------------------
[root@hjj ~]# date +%a
Fri
[root@hjj ~]# date +%A
Friday
----------------------------------------
显示星期几为什么用%a, a 是头一个的意思嘛. A 就是全称了.
b 就是排老二了,就是月份了
----------------------------------------
[root@hjj ~]# date +%b
Nov
[root@hjj ~]# date +%B
November
----------------------------------------

c 是不是老三呢,试一下,不是,为什么? 因为日期用 d 更合适。
----------------------------------------
[root@hjj ~]# date +%d
07
[root@hjj ~]# date +%D
11/07/14
----------------------------------------

时分秒我就不说了,它们是大写的%H%M%S
那小写的h,m,s 是什么意思呢,试一下和看一下帮助就知道啦。

CST 是什么,是china start time 的简写, 东8区。
----------------------------------------
[root@hjj ~]# date +%z
+0800
[root@hjj ~]# date +%Z
CST
----------------------------------------
年就要%y 表示了. 年月日(y,m,d) 时分秒(H,M,S)
----------------------------------------
[root@hjj ~]# date +%y
14
[root@hjj ~]# date +%Y
2014
----------------------------------------



乙: 应用
----------------------------------------
1. 本周是本年度第几周?
----------------------------------------
[root@hjj ~]# date +%W
44
----------------------------------------
2. 20天以后, 5天以前,5小时以前是什么日子
----------------------------------------
[root@hjj ~]# date
Fri Nov  7 14:53:40 CST 2014
[root@hjj ~]# date -d "20 day"
Thu Nov 27 14:53:17 CST 2014
[root@hjj ~]# date -d "-5 day"
Sun Nov  2 14:54:12 CST 2014
[root@hjj ~]# date -d "-5 hour"
Fri Nov  7 09:54:27 CST 2014
我们知道 date +%s 能打印出1970年1月1号到现在的秒数。
----------------------------------------
问: 到2000年1月1号是从70年算起,流失了多少秒呢?
----------------------------------------
前言:
[root@hjj ~]# date -d "19700101 0:0" +%s
-28800
[root@hjj ~]# echo $((3600*8))
28800
可见1970年1月1号,我们的时间已经过去了8个小时,太阳从东方升起!
操作:
[root@hjj ~]# date -d "20000101" +%s
946656000
化为16进制: (因为我在计算机中看到过16进制时间,所以感兴趣!)
[root@hjj ~]# printf 0x"%x\n" 946656000
0x386cd300
扩展:
当前时间化为16进制
[root@hjj ~]# date +%s
1415345421
[root@hjj ~]# printf 0x"%x\n" 1415345421
0x545c750d
----------------------------------------
用4字节能表示多长时间呢?
----------------------------------------
[root@hjj ~]# printf "%d\n" 0xffffffff
4294967295
4字节只能表示43亿秒
[root@hjj ~]# date -d "19700101 4294967295 sec" +%Y%m%d
21060207

4字节只能表示到2106年, 到时候,4字节表示秒数又要出百年虫问题,到时候在说吧。
好在date 程序没有百年虫问题,因为它在x86_64上是用8字节表示的秒数。


----------------------------------------
假如我知道一个秒值,那么它会是什么日期呢?
----------------------------------------
例如1000000000秒 (9个0,10个亿)是个什么日子
100亿秒又是什么日子呢?
[root@hjj ~]# date -d "19700101 1000000000 sec" +%m/%d/%Y
09/09/2001
[root@hjj ~]# date -d "19700101 10000000000 sec" +%m/%d/%Y
11/20/2286
2286年,我们都死光了,不用关心它了。

19700101可以不用写,默认就是那个时间,故可简化为

$ date  -d@10000000000
2286年 11月 21日 星期日 01:46:40 CST

这就是秒值转日期的简写方式.

----------------------------------------
一年是多少秒呢? 3千1百万秒
----------------------------------------
[root@hjj ~]# echo $((24*3600*365))

31536000

一、时区
1. 查看当前时区
date -R
-R 是改变输出格式之意

2. 修改设置时区
方法(1)
tzselect
选择Asia, Shanghai.
这是一个交互程序,帮助你生成TZ 字符串。仅有提示作用。
最后在.bashrc 或 .profile 中设定 export TZ="Asia/Shanghai'

3. 复制相应的时区文件,替换系统时区文件.
cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
在中国可以使用:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值