Linux Shell 时间运算以及时间差计算方法

时间的加减,以及时间差的计算。

1。 时间加减

这里处理方法,是将基础的时间转变为时间戳,然后,需要增加或者改变时间,变成 秒。

如:1990-01-01 01:01:01 加上 1小时 20分

处理方法:

a.将基础时间转为时间戳

time1=$(date +%s -d '1990-01-01 01:01:01')
echo $time1 【时间戳】

b.将增加时间变成秒

[root localhost ~]# time2=$((**+*))
[root localhost ~]# echo $time2
4800

c.两个时间相加,计算出结果时间

time1=$(($time1+$time2))
time1=$(date +"%Y-%m-%d %H:%M:%S" -d "1970-01-01 UTC $time1 seconds");
echo $time1 -- ::01
#如果是分钟,则可以把 seconds换成minutes,天则可以换成 days ,星期换成weeks,月换成months,年换成years
#这个UTC关键词 也可以不写

2。时间差计算方法

如:2010-01-01 与 2009-01-01 11:11:11 时间差

原理:同样转成时间戳,然后计算天,时,分,秒

time1=$(($(date +%s -d '2010-01-01') - $(date +%s -d '2009-01-01 11:11:11')));
echo time1 将time1 / 秒,就变成分了。

补充说明:

shell 单括号运算符号:

a=$(date);

等同于:a=date;

双括号运算符:

a=$((+));
echo $a; 等同于: a=expr +

转自:http://www.cnblogs.com/chengmo/archive/2010/07/13/1776473.html

附录:

Linux date命令可以用来显示或设定系统的日期与时间,在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中可用的标记列表如下:

时间方面:

  • % : 印出 %
  • %n : 下一行
  • %t : 跳格
  • %H : 小时(00..23)
  • %I : 小时(01..12)
  • %k : 小时(0..23)
  • %l : 小时(1..12)
  • %M : 分钟(00..59)
  • %p : 显示本地 AM 或 PM
  • %r : 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M)
  • %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数
  • %S : 秒(00..61)
  • %T : 直接显示时间 (24 小时制)
  • %X : 相当于 %H:%M:%S
  • %Z : 显示时区

日期方面:

  • %a : 星期几 (Sun..Sat)
  • %A : 星期几 (Sunday..Saturday)
  • %b : 月份 (Jan..Dec)
  • %B : 月份 (January..December)
  • %c : 直接显示日期与时间
  • %d : 日 (01..31)
  • %D : 直接显示日期 (mm/dd/yy)
  • %h : 同 %b
  • %j : 一年中的第几天 (001..366)
  • %m : 月份 (01..12)
  • %U : 一年中的第几周 (00..53) (以 Sunday 为一周的第一天的情形)
  • %w : 一周中的第几天 (0..6)
  • %W : 一年中的第几周 (00..53) (以 Monday 为一周的第一天的情形)
  • %x : 直接显示日期 (mm/dd/yy)
  • %y : 年份的最后两位数字 (00.99)
  • %Y : 完整年份 (0000..9999)

若是不以加号作为开头,则表示要设定时间,而时间格式为 MMDDhhmm[[CC]YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数。

使用权限:所有使用者。

当您不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date '+%-H:%-M:%-S' 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为 8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

当您以 root 身分更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续抱持最新的正确值。

Shell初学(六)Linux Shell 时间运算以及时间差计算方法的更多相关文章

  1. linux shell date 时间运算以及时间差计算方法

    最近一段时间,在处理Shell 脚本时候,遇到时间的处理问题. 时间的加减,以及时间差的计算. 获取当前时间戳 date +%s . 时间加减 这里处理方法,是将基础的时间转变为时间戳,然后,需要增加 ...

  2. 【shell 大系】Linux Shell常用技巧

    在最近的日常工作中由于经常会和Linux服务器打交道,如Oracle性能优化.我们数据采集服务器的资源利用率监控,以及Debug服务器代码并解决其效率和稳定性等问题.因此这段时间总结的有关Linux ...

  3. 【Shell】总结·linux shell脚本攻略

    第一章:小试牛刀 #变量赋值 var = value不同于var=value 把var=value写成var = value是一个常见的错误 前者是赋值操作,后者是相等操作 #let命令可以直接执行基 ...

  4. LINUX SHELL脚本攻略笔记[速查]

    Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...

  5. linux shell脚本之-变量极速入门与进阶(1)

    1,如果创建shell脚本? 使用任意文本编辑软件,一般为vim,创建.sh结尾的文件,在文件的最开头用 #!/bin/bash 注明shell的类型 如: ghostwu@dev:~/linux/s ...

  6. (转)Linux Shell系列教程之(十四) Shell Select教程

    本文属于<Linux Shell 系列教程>文章系列,该系列共包括以下 18 部分: Linux Shell系列教程之(一)Shell简介 Linux Shell系列教程之(二)第一个Sh ...

  7. Linux Shell系列教程

    学习Linux Shell知识,就来Linux大学网(Linuxdaxue.com)! 本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格 ...

  8. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  9. Linux(六)shell操作实用技巧

    一.shell操作日期时间 linux 系统为我们提供了一个命令 date,专门用来显示或者设置系统日期时间的.      语法格式为:      date [OPTION]... [+FORMAT] ...

随机推荐

  1. 【Python之路】特别篇--ECMA对象、DOM对象、BOM对象

    ECMA对象 从传统意义上来说,ECMAScript 并不真正具有类.事实上,除了说明不存在类,在 ECMA-262 中根本没有出现“类”这个词. ECMAScript 定义了“对象定义”,逻辑上等价 ...

  2. 用go iris 写的一个网页版文件共享应用(webapp)

    主要演示文件拖拽上传或点击上传到不同的目录中,提供下载和删除功能. 目录结构: -main.go --share(用于分类存放上传文件的目录) --v(视图目录) ---share.html main ...

  3. 富文本编辑器粘贴复制Word

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. http ...

  4. BZOJ 3073: [Pa2011]Journeys Dijkstra+线段树优化建图

    复习一下线段树优化建图:1.两颗线段树的叶子节点的编号是公用的. 2.每次连边是要建两个虚拟节点 $p1,p2$ 并在 $p1,p2$ 之间连边. #include <bits/stdc++.h ...

  5. 线程系列3--Java线程同步通信技术

    上一篇文章我们讲解了线程间的互斥技术,使用关键字synchronize来实现线程间的互斥技术.根据不同的业务情况,我们可以选择某一种互斥的方法来实现线程间的互斥调用.例如:自定义对象实现互斥(sync ...

  6. C++入门经典-例7.5-对象的指针,函数指针调用类成员

    1:指向相应对象的指针就是对象的指针,它的生明方法与其他类型一样,如下: 类名 *p; 类的指针可以调用它所指向对象的成员.形式如下: p->类成员; 2:代码如下: (1)cat.h #inc ...

  7. lamp 环境利用compser安装tp5

    1.安装compser,这个可以去百度命令 2.cd到根目录 3.composer create-project --prefer-dist topthink/think tp(tp可以随意命名) 4 ...

  8. legend3---lavarel多对多模型操作实例

    legend3---lavarel多对多模型操作实例 一.总结 一句话总结: 在多对多模型中,增加关系表的数据 需要 弄一个和关系表一对多的模型关系 1.在lavarel关系模型中,课程和标签表是多对 ...

  9. HashMap三两事

    前言 JDK8中对HashMap做了优化,依然是用数组存储数据,但是扩容时采用双链表的方式避免了高并发情况下导致出现循环链表的问题,另外也引入了红黑树,提高碰撞元素的搜索速度. 一段代码 下面这段代码 ...

  10. springboot非web项目

    使用CommandRunner @SpringBootApplication public class CrmApplication implements ApplicationRunner { @A ...