`
ryan.liu
  • 浏览: 137629 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux下的date命令究竟可以干什么

阅读更多
因为有个Bash脚本,想根据用户给的日期参数(yyyymmdd格式),得到这个日期的前一天的表示。首先想到的就是date命令,网上搜了一大把,其实多数都是互相抄的,date基本用法原本就会,不能用来解决我的问题。
先说不用date命令的方法:
不嫌麻烦就多用几个判断,解决每月开头、每年开头减去一天的问题,最麻烦的是倒推到上个月最后一天,这一天究竟是28、29还是30、31,还得写个函数。
再说date的基本用法:
date +%Y%m%d  这是格式化输出,其他语言多数叫做strftime()
date -d "2 days ago" +%s  -d可以输入一个日期,不过大多是相对于现在时间,+%s是输出时间戳。
date -d "2010-12-06" +%F  -d可以接受ISO格式yyyy-mm-ddTHH:MM:SSZ,也可以接受日期的一些英文格式(月份英文缩写)  %F就是%Y%m%d
接着搜到的我不知道的格式用法,当然对我的问题没有帮助:
格式字符中加-可以去掉前面的0,加_把前面的0变成一个空格,举例:date +%-Y%-m%-d 是 2010-12-6 (6前面的0去掉了)  date +%_Y%_m%_d 是 2010-12- 6  (6前面有一个空格)
最后是谜底,date可以接受的特殊-d参数:
date -d "1970-01-01 UTC 1291622912 seconds" +%s  在前面的日期上面加上这么多秒作为输入。在我的脚本中这么用的:
date=$1   #从脚本的第一个参数得到输入日期(格式yyyy-mm-dd或者yyyymmdd)
datets=`date -d "$1" +%s` #求出这个日期的时间戳,注意两边的是反引号,Tab键上面那个,下同
yesterts=`expr $datets - 86400`  #往前推一天
yesterday=`date -d "1970-01-01 UTC $yesterts seconds" +%Y%m%d` #把它变做输出



我从那里知道的,既不是date的help命令,也不是man文档。而是一个网页 [网址找不着了]
分享到:
评论
1 楼 xfzhu2003 2012-07-18  
# date -d '-2 day 2012-07-11' +%Y-%m-%d            
2012-07-09

相关推荐

    Linux基础命令与干货

    2. date命令:用于显示和设置系统的日期和时间。例如,“date '+%Y-%m-%d'”将输出格式化的日期。 3. reboot和poweroff命令:分别用于重启系统和关闭系统。这两个命令需要root权限才能执行。 4. wget命令:一个...

    linux命令大全

    ### Linux系统管理命令详解 #### adduser - **功能说明**:用于新增用户账户。 - **语法**:`adduser [选项] 用户名` - **补充说明**:在不同的Linux发行版中,`adduser`命令的具体实现方式有所不同。例如,在...

    Linux操作系统与应用技术教案-熟悉shell命令的使用方法.zip

    ### Linux操作系统与应用技术教案-熟悉shell命令的使用方法 #### 知识点解析 **一、Shell概念与版本** 1. **Shell简介** - **定义与作用**:Shell是一种命令行解释器,它是用户与Linux操作系统之间的重要桥梁。...

    jdk-8u271-linux-x64.rpm

    安装步骤通常包括使用`rpm`命令,例如`sudo rpm -ivh jdk-8u271-linux-x64.rpm`。安装完成后,环境变量如JAVA_HOME、PATH等也需要进行相应的配置,以便系统能够正确识别和使用新安装的JDK。 总的来说,"jdk-8u271-...

    jdk-8u121-linux-x64.tar.gz

    在Linux环境下,安装JDK通常涉及解压文件到合适的位置(如`/usr/lib/jvm`),然后设置环境变量`JAVA_HOME`指向JDK的安装路径,并更新`PATH`以包含`bin`目录,以便在任何地方都能运行Java命令。 总之,`jdk-8u121-...

    技术干货 利用zabbix监控mysqldump定时备份数据库是否成功.docx

    大多数公司都会维护测试数据库,并通过mysqldump与Linux的crontab定时任务相结合,定期进行数据库备份。然而,如果忽视了对备份成功的监控,可能会导致在需要时无法恢复数据,从而引发严重问题。 ### 实验步骤 1. ...

    bash shell programming

    通过 Bash Shell 编程,用户可以自动化执行一系列命令或任务,极大地提高了工作效率。本文将详细介绍 Bash Shell 编程的基本概念和技术要点,帮助读者快速掌握这一实用技能。 #### 二、非常简单的脚本 ##### 2.1 ...

    [技术干货] 利用zabbix监控mysqldump定时备份数据库是否成功.docx

    结合Linux的crontab定时任务,我们可以设定周期性地执行数据库备份。 在实际操作中,我们首先创建一个名为test的测试数据库,并在其中创建一个test表。这样可以为我们后续的监控提供一个实际的备份对象。创建数据库...

Global site tag (gtag.js) - Google Analytics