• Linux date命令


    命令概述

    date命令可以用来设置和显示系统当前时间,特别是在有一些Shell命令里面用到date命令来做日期的不同的显示,所以该命令也是非常需要掌握的一个命令。

    语法

    date [OPTION]... [+FORMAT]
    date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

    1.命令参数:

    -d, --date:显示由字符串描述的日期
    -f, --file:显示DATEFILE文件中的每行时间
    -r, --reference:显示文件的最后修改时间
    -R, --rfc-2822: 以RFC2822格式输出日期和时间
    -s, --set:设置时间
    -u, --utc:输出或者设置协调的通用时间
    --help:帮助信息 
    --version版本信息

    2.FORMAT

    用于不同的时间格式显示方式

    % H 小时(00..23):24小时制,01,02,03
    % I 小时(01..12):12小时制,01,02,03
    % k 小时(0..23):24小时制,1,2,3
    % l 小时(1..12):12小时制,1,2,3
    % M 分(00..59% p 显示出AM或PM
    % r 时间(hh:mm:ss AM或PM),12小时
    % s 从1970年1月1日00:00:00到目前经历的秒数
    % S 秒(00..59% T 时间(24小时制)(hh:mm:ss)
    % X 显示时间的格式(%H:%M:%S)
    % Z 时区 日期域
    % a 星期几的简称( Sun..Sat)
    % A 星期几的全称( Sunday..Saturday)
    % b 月的简称(Jan..Dec)
    % B 月的全称(January..December)
    % c 日期和时间( Mon Nov 8 141246 CST 1999% d 一个月的第几天(01..31% D 日期(mm/dd/yy)
    % h 和%b选项相同
    % j 一年的第几天(001..366% m 月(01..12% w 一个星期的第几天(0代表星期天)
    % W 一年的第几个星期(00..53,星期一为第一天)
    % x 显示日期的格式(mm/dd/yy)
    % y 年的最后两个数字( 1999则是99)
    % Y 年(例如:1970,1996等)
    %Y   year
    %z   +hhmm numeric timezone (e.g., -0400)
    %:z  +hh:mm numeric timezone (e.g., -04:00)
    %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
    %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
    %Z   alphabetic time zone abbreviation (e.g., EDT)

    3.示例

    当前时间

    #显示当前日期时间
    date

     

    显示两天前的时间

    #显示两天前的时间
    date -d "+2 days ago" 

    以%Y-%m-%d %H:%M:%S格式显示当前时间

    #以%Y-%m-%d %H:%M:%S格式显示当前时间
    date "+%Y-%m-%d %H:%M:%S" 

    以%Y-%m-%d %H:%M:%S格式显示两天前时间

    #显示两天前的时间,并以%Y-%m-%d %H:%M:%S格式输出
    date -d "+2 days ago" "+%Y-%m-%d %H:%M:%S"

    在date命令中如果要指定其他的时间是变量,那么时间必须要用双引号否则会报错,如果直接是时间值那么可以单引号,但是建议shell里面都使用双引号

    #!/bin/bash
    adate=`date`
    var=`date --date="$adate" +'%H:%M'`
    echo $var

    其它方式

    #两天后
    date -d "-2 days ago" +%Y%m%d
    #一星期前
    date -d "1 week ago" +%Y%m%d
    #一星期后
    date -d "-1 week ago" +%Y%m%d
    #一个月前
    date -d "1 month ago" +%Y%m%d
    #一个月后
    date -d "-1 month ago" +%Y%m%d
    #一年前
    date -d "1 year ago" +%Y%m%d
    #下一天
    date -d next-day +%Y%m%d
    #前一天
    date -d last-day +%Y%m%d
    #前天
    date -d yesterday +%Y%m%d
    #明天
    date -d tomorrow +%Y%m%d
    #上个月
    date -d last-month +%Y%m%d
    #下个月
    date -d next-month +%Y%m%d
    #去年
    date -d last-year +%Y%m%d
    #明年
    date -d next-year +%Y%m%d

    小时(hour),分钟(minute),秒(second)的实现方法同上

    4.修改系统日期和时间

    只修改日期,输入:date -s 2016-03-30

    只修改时间,输入:date -s 21:00:00

    同时修改日期时间,注意要加双引号,日期与时间之间有一空格,输入:

    date -s "2016-03-30 21:00:00"

    修改完后,把系统时间写入CMOS,硬件时钟,以免重启后失效,输入:

    clock -w

    date命令的使用技巧

    --如果指定的时间是变量得必须使用双引号
    var=`date --date="$2" +"%H:%M"`
    
    --如果同时指定变量和时间增量值那么两个应该放在一个双引号里面
    cdate=`date -d "+10 minute $2" +%H:%M`

    总结

    date命令的使用技巧还有很多,这里也没有全部罗列,在shell命令里面比如做日期文件的时候经常会用到该命令,所以还需要熟练掌握。

    备注:

        作者:pursuer.chen

        博客:http://www.cnblogs.com/chenmh

    本站点所有随笔都是原创,欢迎大家转载;但转载时必须注明文章来源,且在文章开头明显处给明链接。

    《欢迎交流讨论》

  • 相关阅读:
    eclipse快捷键
    iOS音频播放 (二):AudioSession 转
    HNU13377:Book Club(DFS)
    BAPC2014 K&&HUNNU11591:Key to Knowledge(中途相遇法)
    小米净水器与小区过滤价格水对照.xls
    NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(一)
    hibernate动态表名映射--仅仅有想不到,没有做不到
    【BZOJ 1660】 [Usaco2006 Nov]Bad Hair Day 乱发节
    oracle-企业信息化
    线性查找算法
  • 原文地址:https://www.cnblogs.com/chenmh/p/5338492.html
Copyright © 2020-2023  润新知