zoukankan      html  css  js  c++  java
  • 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

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

    《欢迎交流讨论》

  • 相关阅读:
    LeetCode "Jump Game"
    LeetCode "Pow(x,n)"
    LeetCode "Reverse Linked List II"
    LeetCode "Unique Binary Search Trees II"
    LeetCode "Combination Sum II"
    LeetCode "Divide Two Integers"
    LeetCode "First Missing Positive"
    LeetCode "Clone Graph"
    LeetCode "Decode Ways"
    LeetCode "Combinations"
  • 原文地址:https://www.cnblogs.com/chenmh/p/5338492.html
Copyright © 2011-2022 走看看