命令概述

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 小时(..):24小时制,01,02,03
% I 小时(..):12小时制,01,02,03
% k 小时(..):24小时制,1,2,3
% l 小时(..):12小时制,1,2,3
% M 分(..)
% p 显示出AM或PM
% r 时间(hh:mm:ss AM或PM),12小时
% s 从1970年1月1日00::00到目前经历的秒数
% S 秒(..)
% 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 :: CST )
% d 一个月的第几天(..)
% D 日期(mm/dd/yy)
% h 和%b选项相同
% j 一年的第几天(..)
% m 月(..)
% w 一个星期的第几天(0代表星期天)
% W 一年的第几个星期(..,星期一为第一天)
% x 显示日期的格式(mm/dd/yy)
% y 年的最后两个数字( 1999则是99)
% Y 年(例如:,1996等)
%Y year
%z +hhmm numeric timezone (e.g., -)
%:z +hh:mm numeric timezone (e.g., -:)
%::z +hh:mm:ss numeric time zone (e.g., -::)
%:::z numeric time zone with : to necessary precision (e.g., -, +:)
%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

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

《欢迎交流讨论》

Linux date命令的更多相关文章

  1. Linux date命令的用法(转)

    1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与时间. 3.命令参数 -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: -s<字符串& ...

  2. [转帖]Linux date命令的用法(转)

    Linux date命令的用法(转) https://www.cnblogs.com/asxe/p/9317811.html 1.命令:date 2.命令功能:date 可以用来显示或设定系统的日期与 ...

  3. Linux date命令的用法

    在linux shell编程中,经常用到日期的加减运算以前都是自己通过expr函数计算,很麻烦.其实date命令本身提供了日期的加减运算非常方便. 例如:得到昨天的时间date  --date=&qu ...

  4. 11.Linux date命令的用法

    date命令常的日常应用   修改时间 date -s “2008/05/23 19:20″ 打包文件 tar zcvf log-$(date +$F).gz /home/admin/logs 同步阿 ...

  5. Linux date命令详解

    1.显示时间 date命令可以按照指定格式显示日期,只键入date则以默认格式显示当前时间.如下: 如果需要以指定的格式显示日期,可以使用“+”开头的字符串指定其格式,详细格式如下: %n : 下一行 ...

  6. Linux date命令 - 显示和设置系统日期与时间

    操作系统上的时间也许只是当做一个时钟.特别在控制台下, 我们通常并不认为时间有什么重要的.但是对于管理员,这种认识是错误的.你知道错误的日期和时间会导致你不能编译程序么? 因为日期和时间很重要,这或许 ...

  7. [linux]date命令时间戳和时间之间的转换

    非常多时候我们查看数据库的数据,或者是一些别人系统中的数据须要用时间戳来查询.或者查询出来的结果是个时间戳. 还有时候,查询条件须要输入时间戳. 我之前的办法就是用在线工具来完毕,后来用mac了.我觉 ...

  8. Linux Date命令学习笔记

    date 根据给定格式显示日期或设置系统日期时间.print or set the system date and time 指令所在路径:/bin/date 命令参数: 参数 描述 -d 显示字符串 ...

  9. Linux date 命令

    date命令用于打印或设置系统日期和时间,常见用法如下: [root@localhost ~]# date //查看当前时间 [root@localhost ~]# date +"%Y-%m ...

随机推荐

  1. cassandra的写过程

    如下: Message, get a new request,type:QUERY      //channelRead0函数 Message, get a new request,customPay ...

  2. .Net 对App.config和Web.config的访问操作(增、删、读、改)

    一.首先引用Configuration 1)App.config如下: using System.Configuration;//若果还没有Configuration,右键引用文件夹添加引用,在.NE ...

  3. 给angularJs的service建模

    先回顾一下我们遇到的问题: 通过一个dialogService创建对话框,并将该service的参数数据通过resolve的方式传递给对话框的controller. controller解析数据后放置 ...

  4. 如何使用ajax将json传入后台数据

    首先采用jquery内部封装好的方法是比较简单的,我们只需做的就是修改里面的一些配置: 对$.ajax()的解析: $.ajax({ type: "POST", //提交方式 co ...

  5. load与initialize

    NSObject类有两种初始化方式load和initialize load + (void)load; 对于加入运行期系统的类及分类,必定会调用此方法,且仅调用一次. iOS会在应用程序启动的时候调用 ...

  6. LocalDB-排序规则:中文乱码; DefaultLanguage

    DefaultLanguage: Set Language 简体中文|us_english SELECT SYSTEM_USER Login SP_DefaultLanguage #Login, 简体 ...

  7. 解决拖拽有内容的div的bug和兼容问题

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 31.0px Consolas; color: #2b7ec3 } p.p2 { margin: 0.0px ...

  8. [转]MySQL批量更新死锁案例分析

    文章出处:http://blog.csdn.net/aesop_wubo/article/details/8286215 问题描述 在做项目的过程中,由于写SQL太过随意,一不小心就抛了一个死锁异常, ...

  9. css3 风车旋转

    <style> .box{width:400px;height:400px;margin:100px auto;transition:1s;} .box div{width:180px;h ...

  10. iis最大工作进程数

    IIS 6.0允许将应用程序池配置成一个Web园(Web Garden).要理解Web园的概念,可以设想这样一种情形:假设有一个IIS 5.0服务器和三个Web网站,每一个Web网站运行着相同的应用程 ...