格式: 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. OCR技术浅探:特征提取(1)

    研究背景 关于光学字符识别(Optical Character Recognition, 下面都简称OCR),是指将图像上的文字转化为计算机可编辑的文字内容,众多的研究人员对相关的技术研究已久,也有不 ...

  2. IIS7 Microsoft.Web.Administration 创建Application问题

    在使用DirectoryEntry操作IIS时,可以设置很多属性.但使用Microsoft.Web.Administration中的一些类时,不知道在哪设置.例如:AccessScript,Acces ...

  3. ui-select : There is no "X"(delete button) with selectize theme, when allow-clear="true"

    but add allow-clear="true"For Bootstrap and Select2 themes, it's working perfectly. reason ...

  4. Spring boot 打包瘦身方法

    背景 随着spring boot 的流行.越来越多的来发着选择使用spring boot 来发 web 应用. 不同于传统的 web 应用 需要 war 包来发布应用. spring boot 应用可 ...

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

    HDU1002:大数加法,PE了N次 import java.util.Scanner; import java.math.*; public class Main { public static v ...

  6. Java栈之顺序栈存储结构实现

    一.栈的基本定义 栈是一种数据结构,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入.删除操作的特殊线性表,通常就是在线性表的尾端进行插入.删除操作. 二.顺序栈的实 ...

  7. linxu系统压缩解压命令

    使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查看及抽取归档文件 使用tar命令创建 ...

  8. git---小乌龟提交

    下载地址:https://tortoisegit.org/ 比如我修改了文件: 1.本地提交在项目目录内右键,点击git commit按钮 2.拉去线上最新代码,与本地代码合并 3.向线上推送

  9. 如何注册iClap账号?

    iClap是一个以产品为基础,集成员工日常所需工具,打通项目工作流程,实现员工自我工作管理.项目管理和企业管理三个体系协同的管理规范系统. 工具/原料 iPhone/Android/浏览器 Teamb ...

  10. webpack打包静态资源和动态资源

    1.对于静态引用的资源: <img src = "static/modelname/imgname.png"> // 修改为下面的写法 <img src = &q ...