shell下时间日期的加减乘除运算

首先我们先来说说什么是shell下的时间戳:

自1970年1月1日(00:00:00 UTC/GMT)以来的秒数。它也被称为Unix时间戳(Unix Timestam、Unix epoch、POSIX time、Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

UNIX时间戳的0按照ISO 8601规范为:1970-01-01T00:00:00Z 一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

shell下的时间加减法就是根据时间戳来实现的,时间戳对我们在shell下的操作非常的有用:

比如:计算某天的时间戳,也就是指定的某一个到1970年1月1日以来的秒数:

//从2014-12-05 19:45:44到1970-1-1总共的秒数
[[email protected] shell]# date -d "2014-12-05 19:45:44" +%s
1417779944

//如果知道某个时间戳,也可以计算出这个时间戳对应的时间日期
[[email protected] shell]# date [email protected]
Fri Dec  5 19:45:44 CST 2014

[[email protected] shell]# date -d @1417779944
Fri Dec  5 19:45:44 CST 2014

知道这些之后那我们就可以计算某一天距离今天过了多少天了:

#!/bin/bash
#
first_stamp=`date -d "2014-12-05 19:45:44" +%s` #计算指定日期的时间戳
today_stamp=`date +%s`                          #计算当天的时间戳
let day_stamp=($today_stamp - $first_stamp)     #当天的时间戳减去指定的时间戳
let day=($day_stamp/86400)                      #相差的时间戳除以一天的秒数就得到天数
echo $day

以下还有一些时间的计算方法:

[[email protected] shell]# echo $(date --date=‘3 day‘)  //当天日期+3天
Fri Jan 16 11:55:02 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 day ago‘)  //当天日期-3天
Sat Jan 10 11:55:10 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 month‘)  //当天日期+3月
Mon Apr 13 11:55:17 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 month ago‘)  //当天日期-3朋
Mon Oct 13 11:55:25 CST 2014
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 year‘)  //当天日期+3年
Sat Jan 13 11:55:32 CST 2018
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 year ago‘)  //当天日期-3年
Fri Jan 13 11:55:38 CST 2012
[[email protected] shell]#
[[email protected] shell]# echo $(date --date=‘3 minute ‘)  //当天日期+3秒
Tue Jan 13 11:58:44 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 minute ago‘)  //当天日期-3秒
Tue Jan 13 11:52:52 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 hour ago‘)  //当天日期-3小时
Tue Jan 13 08:56:00 CST 2015
[[email protected] shell]# 
[[email protected] shell]# echo $(date --date=‘3 hour‘)  //当天日期+3小时
Tue Jan 13 14:56:06 CST 2015
[[email protected] shell]#

转自:http://blog.51cto.com/tanxw/1602915
时间: 2024-10-18 19:38:00

shell下时间日期的加减乘除运算的相关文章

18 PHP数字与字符运算 do while ,for 数组 函数 局部通信 时间日期

转义字符 赋值传值/引用传值 [PHP中的数字与字符运算] do while循环 for循环 红白黑球问题 [提高代码质量--红白黑球问题] 赋值传值和引用传址 数组 枚举数组 关联数组 数组的创建 使用array()函数创建数组 重载数组下标 多维数组 数组操作函数 print_r() unset() count() foreach() 数组元素的删除和增加函数 array_shift() array_values() list() 计算机运行时间计算 函数的概念 函数的语法结构 函数结构说明

归纳整理Linux下C语言常用的库函数----时间日期数学及算法

在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. 字符串转换 3. 字符测试 4. 文件操作 5. 时间日期 6. 常用数学函数 7. 文件内容操作 8. 文件权限控制 9. 进程操作 10. 线程操作 11. Socket操作 12. 信号处理 13. 数据结构及算法 时间函数归类 /*时间函数归类 * * 函数名 用法 备注 * *1.char

Shell下日期循環

在Shell下,可以通過如下命令設置指定日期往前或者往後N天 date -d "$KNOW_DATE UTC +N days" +"%Y%m%d" date -d "$KNOW_DATE UTC -N days" +"%Y%m%d" 由此可得到下面這種日期循環的代碼: b=`date -d "$BEGIN_DATE" +"%Y%m%d"` e=`date -d "$ENDBEG

用shell将时间字符串与时间戳互转

date的详细用户可以参考下面的 http://www.cnblogs.com/xd502djj/archive/2010/12/29/1919478.html date 的具体用法可以查看另外一篇博文 <shell date 命令详解>http://blog.csdn.net/runming918/article/details/7223520 date +%s   可以得到UNIX的时间戳;用shell将时间字符串与时间戳互转:      date -d "2010-10-18

Shell下的命令代换与eval命令

在shell中,如果想获得一个命令的返回值,如果为整数,可以直接用$?获取其退出码. 但如果一条命令的返回值不是整数,怎么实现? 不得不提shell下的命令代换功能! 两种方式实现命令代换 假设我们某个变量需要获得当前时间,则可以这样实现: date=`date` echo $date 或者也可以这样 date=$(date) echo $date 这两种方式都可以实现命令代换的功能,那么他们有何不同? 两种命令代换方式的区别 1.$()看起来比较简洁,而``很容易与''进行混淆. 2.在多层替

linux BASH shell下设置字体及背景颜色

BASH shell下设置字体及背景颜色 echo -e "\e[31mtest\e[41m" \e[30m 将字符的显示颜色改为黑色 \e[31m 将字符的显示颜色改为红色 \e[32m 将字符的显示颜色改为绿色 \e[33m 将字符的显示颜色改为淡红色 \e[34m 将字符的显示颜色改为蓝色 \e[35m 将字符的显示颜色改为紫色 \e[36m 将字符的显示颜色改为淡蓝色 \e[37m 将字符的显示颜色改为灰色 \e[40m -- \e[47m 设置背景色 \e[40m 将背景色设

Python3入门(十三)——常用内置模块之时间日期模块datatime

1.日期时间模块——datatime //其他模块例如time.calender等模块暂不展开 (1)获取当前时间:datatime.now(): from datetime import datetime now = datetime.now() print(now) 结果: 2019-06-09 20:58:13.533006 //如果仅仅使用import,则需要加全限定名: import datetime print datetime.datetime.now() (2) 构造指定时间:c

一个自定义时间日期控件的使用

一个自定义时间日期的控件,依赖类是GitHub下的.比较好用,现在将使用流程记下: 1.布局文件 <TextView android:id="@+id/tv_remunera_day_datepick" style="@style/input_datepicker" android:layout_width="fill_parent" android:layout_height="wrap_content" androi

Android开发之时间日期1

对于手机的时间日期设置估计大家一定都不陌生吧,今天做了一个关于时间日期设置的小例子,其中遇到一个问题,求指导,如何使设置的时间日期和手机系统同步?还望高手指点一二. 先不说这个了,分享一下我的小例子,看对你是否有帮助. 首先是时间设置: .java文件(MainActivity.java): package com.example.activity_time_date; import java.util.Calendar; import android.app.Activity; import