linux's docs

13.2.0: 脚本基础-date用法


1. date命令

作用:自定义输出日期字符串。
语法:date [参数] +格式选项
参数:

  • -d 不是输出当前日期时间,而是根据后面的字符串条件输出相对时间
  • -s 修改日期时间

用法举例:

## 输出日期常用格式

# y和Y格式上的区别
date +%Y-%m-%d
2014-12-16
date +%y-%m-%d
14-12-16

# %F相当于%Y-%m-%d
date +%F
2014-12-16

# w代表周几,W代表第几个周
date +%w
2
date +%W
50

# e代表每个月的第几天
date +%e
18


## 输出时间常用格式

# %T相当于%H:%M:%S
date +%T
16:25:47
date +%H:%M:%S
16:27:06

# %s生成一个时间戳,从1970年01月01日凌晨到现在的秒数,
date +%s
1418718459
## 注意区别%s与%S,%S是second


## 输出相对日期时间举例

# 两月前与两月后
date -d "+2month"
Mon Feb 16 16:37:40 SGT 2015
date -d "-2month"
Thu Oct 16 16:37:58 SGT 2014

# 一天前与一天后
date -d "-1day"
Mon Dec 15 16:38:09 SGT 2014
date -d "+1day"
Wed Dec 17 16:38:17 SGT 2014

# 一小时前与一小时后
date -d "+1hour"
Tue Dec 16 17:38:27 SGT 2014
date -d "-1hour"
Tue Dec 16 15:38:35 SGT 2014

## 相对时间输出格式date -d "+n单位"
## 单位除了上面这些还有year、min和sec


## "-s"修改时间,"ntpdate"通过网络时间服务器同步时间

# 指定日期修改,注意时间会变凌晨
date -s 2014-12-16
Tue Dec 16 00:00:00 SGT 2014
# 指定时间修改
date -s 16:53:40
Tue Dec 16 16:53:40 SGT 2014

# 通过windows时间服务器同步在线时间
yum install ntpdate -y
ntpdate time.windows.com
16 Dec 17:06:11 ntpdate[3555]: step time server 65.55.56.206 offset 128.311639 sec

2. 扩展:命令cal

## "cal"输出日历

# 默认输出本月日历
cal
    December 2014
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

# 默认输出本年度全年度日历,等同于cal 2014
cal -y
                               2014

       January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                      1                      1
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    2  3  4  5  6  7  8
12 13 14 15 16 17 18    9 10 11 12 13 14 15    9 10 11 12 13 14 15
19 20 21 22 23 24 25   16 17 18 19 20 21 22   16 17 18 19 20 21 22
26 27 28 29 30 31      23 24 25 26 27 28      23 24 25 26 27 28 29
                                              30 31
        April                   May                   June
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                1  2  3    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    4  5  6  7  8  9 10    8  9 10 11 12 13 14
13 14 15 16 17 18 19   11 12 13 14 15 16 17   15 16 17 18 19 20 21
20 21 22 23 24 25 26   18 19 20 21 22 23 24   22 23 24 25 26 27 28
27 28 29 30            25 26 27 28 29 30 31   29 30

        July                  August                September
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                   1  2       1  2  3  4  5  6
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    7  8  9 10 11 12 13
13 14 15 16 17 18 19   10 11 12 13 14 15 16   14 15 16 17 18 19 20
20 21 22 23 24 25 26   17 18 19 20 21 22 23   21 22 23 24 25 26 27
27 28 29 30 31         24 25 26 27 28 29 30   28 29 30
                       31
       October               November               December
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
          1  2  3  4                      1       1  2  3  4  5  6
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    7  8  9 10 11 12 13
12 13 14 15 16 17 18    9 10 11 12 13 14 15   14 15 16 17 18 19 20
19 20 21 22 23 24 25   16 17 18 19 20 21 22   21 22 23 24 25 26 27
26 27 28 29 30 31      23 24 25 26 27 28 29   28 29 30 31
                       30

# 可指定输出年份
cal 2015
......
创建名称包含日期时间的日志文件
# 创建datename.sh

vim ./datename.sh
========================================================
#!/bin/bash
# Programe
# This programe could auto touch file and name it by the date
# Created by Zhao Peiwu 16/12/2014

name=`date +%Y%m%d`
filename="$name".log
touch $filename
========================================================

# 执行与查看结果
bash datename.sh
ls
20141216.log  cacu.sh  datename.sh  hw.sh  para.sh

Contents