shell日期 格式和計算

2021-10-05 21:47:30 字數 1495 閱讀 3429

man date 可以直接檢視日期的格式

列出常用的年月日

$ date -d "2012-04-10 -1 day " +%y-%m-%d

2012-04-09

$ date -d "2012-04-10 +1 day " +%y-%m-%d

2012-04-11

$ date -d "-1 week " +%y-%m-%d

2012-04-15

$ date -d "+1 week " +%y-%m-%d

2012-04-29

$ date -d "+1 month " +%y-%m-%d

2012-05-22

$ date -d "-1 month " +%y-%m-%d

2012-03-22

$ date -d "-1 year " +%y-%m-%d

2011-04-22

$ date -d "+1 year " +%y-%m-%d

2013-04-22

需要注意的是 +1 month 這個動作有可能並不會如你所願。

例如

# 如果是5月31,想要得到6月30,結果會不如預期

date -d "2020-05-31 +1 month " +%y-%m-%d

2020-07-01

# 如果是2月28,想要得到3月31,則會不如預期

date -d "2020-02-28 +1 month " +%y-%m-%d

2020-03-28

原因是 +1 month 操作的是:加當前month天數。

此時如果想要獲得月,可以先格式化為 當前月第一天,再使用+1 month 得到下個月,再做相應的資料格式換算。

# 格式化為這個月第一天

begin_date=date -d "$" +%y-%m-%01

# 得到下乙個月第一天

next_month=date-d"$begin_date +1 month" +%y-%m-%d

日期的比較用 > 和 <

shell 也用 < 和 > 操作符進行重定向,所以必須用 < 或 > 加以轉義

begin_date=

$1end_date=

$2sql_file=

$3begin_date=

`date -d"$begin_date"

"+%y-%m-01"

`while

["$begin_date" \<

"$end_date"]do

#spark-sql --hiveconf belong_date=$begin_date -f $sql_file

begin_date=

`date -d"$begin_date +1 month" +%y-%m-%d`

echo

$begin_date

done

shell日期計算

當對系統當前時間進行加減時,只需要輸入 date d 3 hour y m d h 可以獲取3小時前的時間。如果按照自己設定的時間進行加減時,不能輸入 date d 2014040722 3 hour y m d h 這樣輸出的值不正確,我測試的輸出值為 201404072121。而需要輸入 dat...

JS 封裝和整理 日期格式轉換和日期計算

1 日期格式轉換 用法說明 直接呼叫 輸入時間 毫秒數 和 格式 formatdate new date gettime formatdate new date gettime yy年mm月dd日 formatdate new date gettime 今天是yy mm dd hh mm ss fu...

js時間戳轉換日期格式和日期計算

1 function formatdate datetime 14 15 var date new date 16 console.log formatdate date 2018 05 26 23 09 26根據開始日期和期限,計算結束日期 1 date 日期字串yyyy mm dd,如 2016...