我使用过的Linux命令之date - 显示、修改系统日期时间

本文链接:http://codingstandards.iteye.com/blog/1157513   (转载请注明出处)

用途说明

ate命令可以用来显示和修改系统日期时间,注意不是time命令。

常用参数

格式:date   显示当前日期时间。

格式:date mmddHHMM

格式:date mmddHHMMYYYY

格式:date mmddHHMM.SS

格式:date mmddHHMMYYYY.SS

设置当前日期时间,只有root用户才能执行,执行完之后还要执行 clock -w 来同步到硬件时钟。

mm为月份,dd为日期,HH为小时数,MM为分钟数,YYYY为年份,SS为秒数。

格式:date +FORMAT

根据指定格式显示当前时间。比如 date +%Y-%m-%d 就是以 YYYY-mm-dd 的形式显示当前日期,其中YYYY是年份,mm为月份,dd为日期。

常用FORMAT

%Y  YYYY格式的年份(Year)

%m  mm格式的月份(),01-12

%d   dd格式的日期(day of month),01-31

%H   HH格式的小时数(),00-23

%M  MM格式的分钟数(),00-59

%S   SS格式的秒数(),00-59

%F   YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d

%T   HH-MM-SS格式的时间(Time),同%H:%M:%S

%s   自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000

%w   星期几,0-6,0表示星期天

%u   星期几,1-7,7表示星期天

注意以上格式是可以任意组合的,还可以包括非格式串,比如 date "+今天是%Y-%d-%m,现在是$H:%M:%S"

更多格式 man date 或 info date

DESCRIPTIONDisplay the current time in the given FORMAT, or set the system date.Mandatory arguments to long options are mandatory for short options too.-d, --date=STRINGdisplay time described by STRING, not 'now'

格式:date -d STRING +FORMAT

显示用STRING指定的日期时间(display time described by STRING, not ‘now’)。

echo `date -d "-1min" +%Y/%m/%d/%H/%M`
2016/04/21/10/28date
2016年 04月 21日 星期五 10:29:30 CST

格式:date -s STRING

格式:date --set=STRING

设置当前时间为STRING指定的日期时间。

STRING可谓变化多样,支持很多种日期时间的描述方式。下面列举一些常用的日期表示方式,希望能够举一反三。

指定日期:

date -d YYYY-mm-dd

指定时间,日期是今天:

date -d HH:MM:SS

指定日期时间:

date -d "YYYY-mm-dd HH:MM:SS"

指定1970年以来的秒数:

date -d '1970-01-01 1251734400 sec utc'      (2009年 09月 01日 星期二 00:00:00 CST)

date -d '1970-01-01 1314177812 sec utc'      (2011年 08月 24日 星期三 17:23:32 CST)

今天:

date

date -d today

date -d now

明天:

date -d tomorrow

date -d next-day

date -d next-days

date -d "next day"

date -d "next days"

date -d "+1 day"

date -d "+1 days"

date -d "1 day"

date -d "1 days"

date -d "-1 day ago"

date -d "-1 days ago"

昨天:

date -d yesterday

date -d last-day

date -d last-days

date -d "last day"

date -d "last days"

date -d "-1 day"

date -d "-1 days"

date -d "1 day ago"

date -d "1 days ago"

前天:

date -d "2 day ago"

date -d "2 days ago"

date -d "-2 day"

date -d "-2 days"

大前天:

date -d "3 day ago"

date -d "3 days ago"

date -d "-3 day"

date -d "-3 days"

上周,一周前:

date -d "1 week ago"

date -d "1 weeks ago"

上个星期五(不是上周五):

date -d "last-friday"

date -d "last friday"

上月,一月前:

date -d last-month

date -d last-months

date -d "-1 month"

date -d "-1 months"

下月,一月后:

date -d next-month

date -d next-months

date -d "+1 month"

date -d "+1 months"

去年,一年前:

date -d last-year

date -d last-years

date -d "-1 year"

date -d "-1 years"

明年,一年后:

date -d next-year

date -d next-years

date -d "+1 year"

date -d "+1 years"

一小时前:

date -d "last-hour"

date -d "last-hours"

date -d "1 hour ago"

date -d "1 hours ago"

一小时后:

date -d "1 hour"

date -d "1 hours"

一分钟前:

date -d "1 minute ago"

date -d "1 minutes ago"

一分钟后:

date -d "1 minute"

date -d "1 minutes"

一秒前:

date -d "1 second ago"

date -d "1 seconds ago"

一秒后:

date -d "1 second"

date -d "1 seconds"

使用示例

示例一 显示和设置日期时间

[root@node56 ct08]# date 
2011年 08月 20日 星期六 17:37:11 CST
[root@node56 ct08]# date 08220942 
2011年 08月 22日 星期一 09:42:00 CST

[root@node56 ct08]# clock -w 
[root@node56 ct08]# date 
2011年 08月 22日 星期一 09:42:01 CST
[root@node56 ct08]#

示例二 显示指定日期时间

[root@node56 ~]# date 
2011年 08月 23日 星期二 07:41:03 CST
[root@node56 ~]# date -d next-day +%Y%m%d 
20110824
[root@node56 ~]# date -d next-day +%F 
2011-08-24
[root@node56 ~]# date -d next-day '+%F %T' 
2011-08-24 07:41:47
[root@node56 ~]# date -d last-day '+%F %T' 
2011-08-22 07:43:46
[root@node56 ~]# 
[root@node56 ~]# date -d yesterday '+%F %T' 
2011-08-22 07:44:31
[root@node56 ~]# date -d tomorrow '+%F %T' 
2011-08-24 07:45:19
[root@node56 ~]# date -d last-month +%Y%m 
201107
[root@node56 ~]# date -d next-month +%Y%m 
201109
[root@node56 ~]# date -d next-year +%Y 
2012
[root@node56 ~]#

示例三 写一个脚本来计算母亲节和父亲节的日期

母亲节(每年5月的第二个星期日 )

  2005年5月8日

  2006年5月14日

  2007年5月13日

  2008年5月11日

  2009年5月10日

  2010年5月9日

  2011年5月8日

  2012年5月13日

父亲节(6月第三个星期日),下面是最近几年的父亲节日期

  2005年6月19日
  2006年6月18日
  2007年6月17日
  2008年6月15日
  2009年6月21日
  2010年6月20日
  2011年6月19日

  2012年6月17日

下面是Linux查看某年某月的日历的方式。 
[root@node56 ~]# cal 5 2012 
     五月 2012      
日 一 二 三 四 五 六
       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

下面的脚本用来计算指定年份的母亲节和父亲节的日期。

Bash脚本:calc_date.sh

Bash代码  
  1. #!/bin/sh
  2. # 母亲节(每年5月的第二个星期日 )
  3. # usage: mother_day [year]
  4. mother_day()
  5. {
  6. local may1  # 5月1日
  7. if [ "$1" ]; then
  8. may1=$1-05-01   # 也可以是是$1/05/01
  9. else
  10. may1=5/1   # 也可以是05/01,但不能是05-01
  11. fi
  12. #date -d $may1
  13. # 看5月1日是星期几
  14. local w=(date+(date+may1)    # %w 0=星期天 1-6=星期一到六
  15. #echo $w
  16. if [ $w -eq 0 ]; then   # 如果是5月1日星期天,就跳过一个星期
  17. date +%F -d "$may1 +1 week"
  18. else    # 如果5月1日不是星期天,就跳过两个星期,再减去w天
  19. date +%F -d "may1+2week−may1+2week−w day"
  20. fi
  21. }
  22. # 父亲节(每年6月的第三个星期日)
  23. # usage: father_day [year]
  24. father_day()
  25. {
  26. local june1     # 保存6月1日的日期
  27. if [ "$1" ]; then
  28. june1=$1-06-01
  29. else
  30. june1=6/1
  31. fi
  32. # 因为采用1-7表示星期几,简化了计算逻辑
  33. local w=(date+(date+june1)   # %u 7=星期天,1-6=星期一到六
  34. date +%F -d "june1+3week−june1+3week−w day"
  35. }
  36. # usage: ./calc_date.sh [year]
  37. if [ "$1" ]; then
  38. echo Mother Day of year $1 is (motherday"(motherday"1")
  39. echo Father Day of year $1 is (fatherday"(fatherday"1")
  40. else
  41. echo Mother Day of this year is $(mother_day)
  42. echo Father Day of this year is $(father_day)
  43. fi

[root@node56 ~]# ./calc_date.sh 
Mother Day of this year is 2011-05-08
Father Day of this year is 2011-06-19
[root@node56 ~]# ./calc_date.sh 2011 
Mother Day of year 2011 is 2011-05-08
Father Day of year 2011 is 2011-06-19
[root@node56 ~]# ./calc_date.sh 2010 
Mother Day of year 2010 is 2010-05-09
Father Day of year 2010 is 2010-06-20
[root@node56 ~]# ./calc_date.sh 2009 
Mother Day of year 2009 is 2009-05-10
Father Day of year 2009 is 2009-06-21
[root@node56 ~]# ./calc_date.sh 2008 
Mother Day of year 2008 is 2008-05-11
Father Day of year 2008 is 2008-06-15
[root@node56 ~]# ./calc_date.sh 2007 
Mother Day of year 2007 is 2007-05-13
Father Day of year 2007 is 2007-06-17
[root@node56 ~]# ./calc_date.sh 2006 
Mother Day of year 2006 is 2006-05-14
Father Day of year 2006 is 2006-06-18
[root@node56 ~]# ./calc_date.sh 2005 
Mother Day of year 2005 is 2005-05-08
Father Day of year 2005 is 2005-06-19
[root@node56 ~]# ./calc_date.sh 2012 
Mother Day of year 2012 is 2012-05-13
Father Day of year 2012 is 2012-06-17

问题思考

相关资料

【1】Tsung's Blog  Linux 使用 date 計算時間(昨天、明天)
http://blog.longwin.com.tw/2010/07/linux-date-computer-2010/

【2】百度空间  linux date(格式化字符串)
http://hi.baidu.com/wuchangqian/blog/item/925281174587c65df3de32b0.html

【3】鸟哥的Linux私房菜  15.3.1 Linux 手動校時工作: date, hwclock
http://linux.vbird.org/linux_server/0440ntp.php#date

【4】xukaizijian  [linux] date和hwclick  
http://xukaizijian.blog.163.com/blog/static/1704331192011028103527980/?suggestedreading

【5】来去 的BLOG (ppp_10001)  Linux--date命令
http://blog.csdn.net/ppp_10001/article/details/5275594

http://www.cnblogs.com/diyunpeng/archive/2011/11/20/2256538.html

linux date相关推荐

  1. linux+date+命令+作业,Linux date命令的使用

    1.命令简介 date命令用于按照指定格式显示当前时间或者指定的时间,也可以设置系统时间.很多Shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作,此时可以使用date命令来完 ...

  2. linux date 小写h,linux date 命令详解[转载]

    linux date 命令详解 使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [- ...

  3. linux date命令设置时间

    linux date命令设置时间 其实很简单 # date -s 20060925 # date -s 21:19:50 第一行设置日期,第二行设置时间. 转载于:https://www.cnblog ...

  4. linux date 天之前,linux date命令前后几天的推导

    linux date使用(前后几天时间推导) 在Linux系统 中,可以采用如下方法: 1) 取之前的时间: date -d "a day ago" +%Y%m%d 取出前1天的系 ...

  5. linux date命令_Linux date命令示例

    linux date命令 Unix/Linux date command is a command used for displaying the system's date and time. In ...

  6. [Linux] date命令

    Linux date命令 可用标记如下 时间 %H : 小时(00..23) %I : 小时(01..12) %k : 小时(0..23) %l : 小时(1..12) %M : 分钟(00..59) ...

  7. Linux date时间转换操作

    获取毫秒值 date不支持直接获取毫秒值,需要使用纳秒转为毫秒. nowNs=`date "+%s%N"` echo $nowNsnowMs=`expr $nowNs / 1000 ...

  8. linux date 时间同步,Linux date 时间设置同步命令分享

    Linux date 时间设置同步命令分享,时间,命令,硬件,系统,服务器 Linux date 时间设置同步命令分享 易采站长站,站长之家为您整理了Linux date 时间设置同步命令分享的相关内 ...

  9. Linux date命令精确到毫秒

    Linux date命令精确到秒 date +%Y-%m-%d' '%H-%M-%S [root@harbor ~]# date +%Y-%m-%d' '%H-%M-%S 2021-01-25 17- ...

最新文章

  1. ISLR_ANOVA
  2. 20145240《信息安全系统设计基础》第十二周学习总结
  3. vb中如何才能有手型的光标?
  4. 阿里云将增设马来西亚数据中心 中国技术获赞
  5. VS对.ini文件的操作
  6. 序列化、模块 day21
  7. 参数学习/非参数学习算法
  8. iPhone路径大全
  9. 腾讯越来越不懂游戏了
  10. Fingerprint 解锁流程
  11. 如何使用kettle将EXCEL导入数据库
  12. android毕业论文致谢,毕业论文致谢10篇(精选)
  13. 安全行业从业人员自研开源扫描器合集
  14. Android 手游聚合SDK那些事
  15. 解决NativeCat能连接的上,但是IDEA连接不上
  16. thingsboard之边缘网关建立连接过程
  17. 应届大硕,上海找工作
  18. 监听页面关闭和刷新的总结
  19. 洛谷CF1303A Erasing Zeroes 题解
  20. 文贝中的文章如何实现仅自己可见?

热门文章

  1. 梳理vue双向绑定的实现原理
  2. 元组Tuple、数组Array、映射Map
  3. Swift中空合运算符、闭区间运算符、单侧区间、半开区间
  4. Vue实现左右菜单联动实现
  5. JS中的this对象详解
  6. 【Todo】Java的JIT机制
  7. 水晶报表设置FiledObject支持HTML格式的数据
  8. 灰色预测原理及JAVA实现
  9. Lync 小技巧-24-PDF 加密文件-转-Word-操作手册
  10. PS调出通透唯美阳光外景女生照片