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...