shell下時間日期的加減乘除運算

2022-08-09 01:33:14 字數 2441 閱讀 1641

首先我們先來說說什麼是shell下的時間戳:

自2023年1月1日(00:00:00 utc/gmt)以來的秒數。它也被稱為unix時間戳(unix timestam、unix epoch、posix time、unix timestamp)是從2023年1月1日(utc/gmt的午夜)開始所經過的秒數,不考慮閏秒。

unix時間戳的0按照iso 8601規範為:1970-01-01t00:00:00z 乙個小時表示為unix時間戳格式為:3600秒;一天表示為unix時間戳為86400秒,閏秒不計算。

shell下的時間加減法就是根據時間戳來實現的,時間戳對我們在shell下的操作非常的有用:

比如:計算某天的時間戳,也就是指定的某乙個到2023年1月1日以來的秒數:

//從2014-12-05 19:45:44到1970-1-1總共的秒數

[root@node1 shell]# date -d "2014-12-05 19:45:44" +%s

1417779944

//如果知道某個時間戳,也可以計算出這個時間戳對應的時間日期

[root@node1 shell]# date --date=@1417779944

fri dec  5 19:45:44 cst 2014

[root@node1 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

以下還有一些時間的計算方法:

[root@node1 shell]# echo $(date --date='3 day')  //當天日期+3天

fri jan 16 11:55:02 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 day ago')  //當天日期-3天

sat jan 10 11:55:10 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 month')  //當天日期+3月

mon apr 13 11:55:17 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 month ago')  //當天日期-3朋

mon oct 13 11:55:25 cst 2014

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 year')  //當天日期+3年

sat jan 13 11:55:32 cst 2018

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 year ago')  //當天日期-3年

fri jan 13 11:55:38 cst 2012

[root@node1 shell]#

[root@node1 shell]# echo $(date --date='3 minute ')  //當天日期+3秒

tue jan 13 11:58:44 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 minute ago')  //當天日期-3秒

tue jan 13 11:52:52 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 hour ago')  //當天日期-3小時

tue jan 13 08:56:00 cst 2015

[root@node1 shell]# 

[root@node1 shell]# echo $(date --date='3 hour')  //當天日期+3小時

tue jan 13 14:56:06 cst 2015

[root@node1 shell]#

**:

linux下的shell運算(加 減 乘 除)

i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k let expressions 執行乙個或多個表示式。表示式中的變數前不必有 如果表示式中包含了空格或其他特殊字元,則必須引起來。例...

linux下的shell運算(加 減 乘 除)

i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k i j k 等價於 i expr j k let expressions 執行乙個或多個表示式。表示式中的變數前不必有 如果表示式中包含了空格或其他特殊字元,則必須引起來。例...

shell數值計算(加減乘除)

shell 包含三個命令 bc expr let可用於數值計算。輸入 整數,let和expr都無法進行浮點運算,但是bc和awk可以。輸出 bc expr可直接顯示計算結果 let則丟棄計算結果,可通過傳遞結果到變數,取變數值獲得計算結果。格式示例 bc root localhost echo 30...