预备知识
在类Unix系统中,日期被存储成一个整数,其大小为自时间标准时间(UTC)1970年1月1号0时0分0秒起流失的秒数。这种计时方式称为纪元时或Unix时间。
实战演练
- 读取时间
[root@shaofeng ~]# date
2018年 11月 27日 星期二 23:05:45 CST
- 打印现在纪元时
[root@shaofeng ~]# date +%s
1543331191
- 指定日期串转换成纪元时
[root@shaofeng ~]# date --date "Thu Nov 18 08:07:21 IST 2010" +%s
1290047841
- 获取日期是星期几
[root@shaofeng ~]# date --date "Jan 20 2001" +%A
星期六
- 打印对应格式的日期
[root@shaofeng ~]# date "+%d %B %Y"
27 十一月 2018
- 设置日期和时间
[root@shaofeng ~]# date -s "21 June 2009 11:01:22"
- 计算话费时间
[root@shaofeng ~]# chmod a+x ./time_take.sh
[root@shaofeng ~]# ./time_take.sh
Time taken to execute commands is 0 seconds.
[root@shaofeng ~]# cat ./time_take.sh
#!/bin/bash
#文件名:time_take.sh
start=$(date +%s)
#commands;
#statements;
end=$(date +%s)
difference=$((end - start))
echo Time taken to execute commands is $difference seconds.
工作原理
日期内容 | 格式 |
---|---|
星期 | %a(例如:Sat),%A(例如:Saturday) |
月 | %b(例如:Nov),%B(例如:November) |
日 | %d(例如:31) |
固定格式日期(mm/dd/yy) | %D(例如:10/18/10) |
年 | %y(例如:10),%Y(例如:2010) |
小时 | %I或%H(例如:08) |
分钟 | %M(例如:33) |
秒 | %S(例如:10) |
纳秒 | %N(例如:695208515) |
Unix纪元时(以秒为单位) | %s(例如:) |
补充内容
- 在脚本中生成延迟
[root@shaofeng ~]# cat ./sleep.sh
#!/bin/bash
#文件名:sleep.sh
echo -n Count:
tput sc #存储光标位置
count=0
while true;
do
if [ $count -lt 10000 ];
then
let count++;
sleep 1;
tput rc #恢复光标位置
tput ed #清除光标位置到行尾之间的内容
echo -n $count
else exit 0;
fi
done