格式: date [选项] ... [+格式]

选项说明:

  -d ,--date=字符串   显示指定字符串所描述的时间

格式说明:

例子1:

#!/bin/bash

##. 获取当前系统时间 YYYY-MM-DD HH:MM:SS
v_time_eq=`date "+%F %T"`
v_time=`date "+%Y-%m-%d %H:%M:%S"` echo -e "系统当前时间v_time: ${v_time}, v_time_eq: ${v_time_eq} \tv_time 等价于 v_time_eq, 但是v_time 的格式,可读性更强,建议使用。"
##. 获取指定格式的日期 YYYY-MM-DD, YYYYMMDD, YYYY/MM/DD
v_date=`date -d "$v_time" +%Y%m%d`
v_date_dir=`date -d "$v_time" +%Y/%m/%d`
v_date_hor=`date -d "$v_time" +%Y-%m-%d` echo "系统当前日期v_date: ${v_date}, v_date_dir: ${v_date_dir}, v_date_hor: ${v_date_hor}。感受下不同的格式。"
##.获取前一天、后一天的日期 YYYYMMDD
v_date_ago_1=`date -d "$v_date -1 day" +%Y%m%d`
v_date_future_1=`date -d "$v_date 1 day" +%Y%m%d` echo "前一天v_date_ago_1: ${v_date_ago_1}, 后一天v_date_future_1: ${v_date_future_1}"
##.获取前一个月、后一个月的日期 YYYYMMDD
v_date_ago_1month=`date -d "$v_date -1 month" +%Y%m%d` #遇到2月闰月的时候,会有问题,比如20170329,前一个月会变成20170301
v_date_ago_1month_leap=`date -d "20170329 -1 month" +%Y%m%d`
v_date_future_1month=`date -d "$v_date 1 month" +%Y%m%d` echo "前一个月日期v_date_ago_1month: ${v_date_ago_1month}, 后一个月日期v_date_future_1month: ${v_date_future_1month}"
echo "闰2月的时候,会有问题,比如20170329 的前一个月返回的是: ${v_date_ago_1month_leap}, 并不是20170228"
##.获取前一年、后一年的日期 YYYYMMDD
v_date_ago_1year=`date -d "$v_date -1 year" +%Y%m%d`
v_date_future_1year=`date -d "$v_date 1 year" +%Y%m%d` echo "前一年的日期v_date_ago_1year:${v_date_ago_1year}, 后一年的日期v_date_future_1year: ${v_date_future_1year}"
##.获取系统当前月份 月初日期 YYYYMMDD
v_month=`date -d "$v_date" +%Y%m`
v_month_ago_1=`date -d "$v_month -1 month" +%Y%m`
v_month_future_1=`date -d "$v_month 1 month" +%Y%m` echo "系统当前月份月初日期v_month:${v_month},上个月月初日期v_month_ago_1:${v_month_ago_1}, 下个月月初日期v_month_future_1:${v_month_future_1}"

结果截图:

例子2: 对于单独使用小时、分钟时,会有08,09这样的出现,需要转换成10进制,才能进行计算。

#!/bin/bash

#当小时、分钟是08、09时,计算出现错误,value too great for base (error token is "") 数值太大不可为算数进制的基
#原因是shell将08、09当成了8进制数,而8进制数中合法的最大的数字是7,须让Shell强制将08、09当成10进制来解释,在前面加上10# v_hour=`date -d "20170701 08:05:00" +%H`
v_min=`date -d "20170701 08:05:00" +%M` echo "v_hour is ${v_hour}"
echo "v_min is ${v_min}" ## 转换成10进制,才能计算
let v_hour=#${v_hour}
let v_min=#${v_min} ## 计算总的分钟数
let v_total_min=${v_hour}*+${v_min}
echo "v_total_min is ${v_total_min}"

结果截图:

------------------------传送门------------------------

Shell date 命令详解的更多相关文章

  1. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  2. Linux shell tr 命令详解

    该随笔摘自 https://www.jb51.net/article/103892.htm Linux shell tr 命令详解 1. 用途 tr,translate的简写,主要用于压缩重复字符,删 ...

  3. Linux shell sed 命令详解

    详细的sed命令详解,请参考https://my.oschina.net/u/3908182/blog/1921761 sed命令常见用途 查找关键词做全局替换 查找某行的关键词做替换 查找关键字所在 ...

  4. mac date命令详解

    Mac下的date命令是BSD(Berkeley Software Distribution)系的,Linux下date命令是GNU(GNU's Not Unix)系,二者用法有一些区别. BSD并不 ...

  5. date命令详解与练习

    date : 用来打印或设置系统日期和时间. 它在linux shell编程中经常会用到.比如每天生成随日期变化的档案名,尤其在银行业务中每天都会生成流水文件.eg:datefile=$(date & ...

  6. date命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/qmfsun/p/4598650.html date "+今天是%Y-%d-%m,现在是%H:%M:%S&qu ...

  7. Linux date命令详解

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

  8. linux之date命令详解

    date命令的用处 1.用于显示特殊的时间格式,可以用于对日志文件的命名 2.用于设置时间 ,不过这方面用的比较少,因为一般的服务器都设置的有自动同步网络时间 用法: date [OPTION]... ...

  9. linux系统date命令详解

    Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟, ...

随机推荐

  1. 【HTML5 localStorage本地储存】简介&基本语法

    了解localStorage localStorage是最新的HTML5中的新技术,它主要是用于本地储存.最近看了看localStorage,发现比cookie好多用了,还比cookie简单多了.于是 ...

  2. uib-datepicker-popup 日期不可输入 只可以选择 :readonly="true"

    <div name="{{property.name}}" style="display: flex" ng-switch-when="date ...

  3. SDUT中大数实现的题目,持续更新(JAVA实现)

    SDUT2525:A-B (模板题) import java.util.Scanner; import java.math.*; public class Main { public static v ...

  4. PAT 1110 Complete Binary Tree[比较]

    1110 Complete Binary Tree (25 分) Given a tree, you are supposed to tell if it is a complete binary t ...

  5. HTML5笔记——formData

    注:formData中的数据在控制台上的console里面是打印不出来的,只能在控制台的network里面查看到具体的发送数据和发送选项 文章出处:梦想天空 XMLHttpRequest Level ...

  6. Python的socket网络编程(一)

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 先写首诗,抒抒情. 一. 食堂.校园 见过你那么多次 卑微的我 只敢偷偷瞄上一眼 心扑通 扑通 春天真好 不是么 二. 学子 ...

  7. centos7下配置iptables实现外网访问内网服务器

    说明:Centos 7 默认的防火墙是 firewall,安装iptables之前需关闭Firewall 外网机器:外网ip:120.25.71.183内网ip:10.1.1.23 内网机器:内网ip ...

  8. javascript中常用函数汇总

    js中函数很多,在实际项目开发中,函数的应用可以很大程度上简化我们的代码,所以在此记下开发中js中常用的函数,增强记忆. 1.isNaN(X):函数用于检查其参数是否是非数字值. 如果 x 是特殊的非 ...

  9. 【Thinking in Java, 4e】控制流程执行

    p46~p75: [迭代] 1.Java不允许将数字作为布尔值用. 1.有点意思的小程序WhileTest. public class WhileTest { static boolean condi ...

  10. Kafka学习之(一)了解一下Kafka及关键概念和处理机制

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模小打的网站中所有动作流数据.优势 高吞吐量:非常普通的硬件Kafka也可以支持每秒100W的消息,即使在非常廉价的商用机器上也能做 ...