国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

shell的date命令:使用方法,以及小時、分鐘的計算

2019-11-11 01:50:04
字體:
來源:轉載
供稿:網友

shell命令格式嚴格,不像Python那樣命令行中可以添加空格。如等號兩邊無空格。有多余空格錯誤,日期date命令就是最明顯的例子。

 

命令格式:

date [-u] [-d datestr] [-s datestr] [--utc] [--universal][--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT][MMDDhhmm[[CC]YY][.ss]]

如:

date +%Y%m%d             :以yyyymmdd格式輸出(20111118)date --date="1 day ago" +%Y%m%d :一天前的日期

date -d "-2 day 20111111" +%Y%m%d

day="20111111"  

for i in `seq 0 6`     :循環看 參數順序無關,命令都一樣do    date -d "$day +$i day" +%Y%m%d   :正數可以省略符號    date +%Y%m%d -d "$day +$i day" 

    date +%Y%m%d -d "$i day $day "

    date +%Y%m%d -d "+$i day $day "    date +%Y%m%d -d $day

done

格式注意

1,date后面每個空格之間都是一個獨立的參數,分別看做整體,用雙引號格式能看的更為清楚,如date "+%Y%m%d %H:%M:%S" -d "+1 hour"

        i.             -d“-2 day20111111”指定輸出內容

        ii.             “+%Y%m%d”是一個整體,控制輸出格式,+后面無空格

2,參數順序無關,如

                date -d "-2 day 20111111" +%Y%m%d

              date +%Y%m%d -d "-2 day 20111111"

date +%Y%m%d -d "20111111 -2 day"

       都一樣。

3,獨立參數有無雙引號都行,

date -d 2014-02-13 +%s和date -d"2014-02-13" "+%s"是一樣的,還有date -d'2014-02-13' +%s

時間字符串的轉化:

用date 的輸出格式控制實現,但“月日年”和“時分秒”必須分開處理,否則會無法識別。such as

2013-10-30 20:12:59 或者 20131030 20:12:59

注意:

1,二者用空格分割;

2,年月日作為整體,格式十分靈活,可以隨意寫。但時分秒必須用冒號”:”分開,否則無法識別。

 

1 date字符串與時間戳格式互轉:

A)字符串轉時間指定格式:

計算2011111前兩天    

date -d "-2 day 20111111" +%Y%m%d   (輸出為 20111109)     

或者date --date="20130913"+%Y%m%d

 

B)字符串轉換為時間戳:

date -d "2010-10-18 00:00:00" +%s    (輸出  1287331200)

-d參數指定字符串,+%s表示輸出時間戳。

 

C)時間戳轉換為字符串:

date -d '1970-01-01 UTC 1287331200 seconds' +"%Y-%m-%d %T"(輸出2010-10-18 00:00:00)

        或者直接用@符號 

         date -d @1287331200 "+%Y-%m-%d

D)時間戳的日期計算:

seconds=`date -d "2010-10-18 00:00:00" +%s`     #得到時間戳

seconds_new=`exPR $seconds + 86400`          #加上一天的秒數86400

date_new=`date -d @$seconds_new "+%Y-%m-%d"`   #獲得指定日前加上一天的日前

 

2 分鐘計算的兩種方法:

1)date時間計算,輸出用格式控制符:

date "+%Y-%m-%d %H:%M:%S" -d "-15 minute$yearof-$monthof-$dayof 20:12:59"

例子:

yearof="2013"

monthof="10"

dayof="30"

nowth=1

echo $nowth

echo $dayof

date "+%G-%m-%d %H:%M:%S" -d "2013-10-3020:12:59"

date "+%Y%m%d%H%M%S" -d "2013-10-30 20:12:59"

mytime=`date "+%Y-%m-%d %H:%M:%S" -d"$yearof-$monthof-$dayof 20:12:59"`

echo "$mytime is"

mytime=`date "+%Y-%m-%d %H:%M:%S" -d "-15 minute$yearof-$monthof-$dayof 20:12:59"`

echo "$mytime now is"

nowtime=`date "+%Y%m%d%H%M%S" -d"$yearof-$monthof-$dayof 20:12:59"`

#time must be with :, if no, wrong

echo "$nowtime is"

nowtime=`date "+%Y%m%d%H%M%S" -d "-15 minute${yearof}${monthof}${dayof} 20:12:59"`

echo "$nowtime now is"

 

 

2)轉為時間戳計算:

#date "+%Y-%m-%d %H:%M:%S" -d "20131030203859"

#date -d "$yearof-$monthof-$dayof 14:32:12" +%s

#date -d "$yearof-$monthof-$dayof 14:32:12" +%s

 

 

 

3 屏蔽字符串,如分和秒歸0:

true_time="2013-09-15 15:36:11"

start_time=`date "+%Y%m%d%H0000" -d"$true_time"`

echo $start_time

 

##mytime=`date -d "$start_time" "+%s"`#invalid

 

test_time=`date "+%Y-%m-%d %H:00:00" -d"$true_time"`

echo $test_time

#轉時間戳

start_time=`date -d "$test_time" "+%s"`

echo $start_time

 

4 按日期循環執行的shell:

oneday="20141103"

dbname="wizad"

set -x

for i in `seq 0 60`

do

    onedayid=$(date -d"${oneday} +$i day" +%Y-%m-%d)

     Hive -e "use${dbname};

     alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='3') location'/user/wizad/data/wizad/raw/${onedayid}/3_1/';

     alter tablewizad_mdm_cleaned_hdfs add partition (day='${onedayid}',adn='5') location'/user/wizad/data/wizad/raw/${onedayid}/5_1/';

     "

done

 

5 一些date常用案例:

 

1,將增加時間變成秒

 time2=$((1*60*60+20*60))

 echo$time2

4800

2,兩個時間相加,計算出結果時間

time1=$(date +%s -d '1990-01-01 01:01:01')

time1=$(($time1+$time2))

time1=$(date +%Y-%m-%d/ %H:%M:%S -d"1970-01-01 UTC $time1 seconds");

echo $time1

1990-01-01 02:21:01

 

3,時間差計算方法

如: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 / 60 秒,就變成分了。

 

4,小時的計算:

date#當前時間

current_time=`date "+%Y-%m-%d%H:00:00" -d "-1 hour"` #取一小時前的時間,分秒清零

echo $current_time

start_time=`date -d"$current_time" "+%s"`#轉化為時間戳

echo $start_time

 

end_time=`date "+%Y%m%d %H:%M:%S"-d "+1 hour ${current_time}"`#

echo $end_time

my_time=`date "+%Y-%m-%d%H:00:00"`

echo $my_time

上面兩個都是取當前時間的分秒清零。

 

t_time=`date -d "$my_time""+%s"`

echo $t_time

t2_time=$((start_time+3600))  #注意,轉化為時間戳后可以直接計算,用shell的簡便計算符$((表達式)),直接求出一小時后的時間(時間戳格式)

echo $t2_time


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江都市| 拉萨市| 临西县| 云林县| 奈曼旗| 正蓝旗| 广汉市| 怀安县| 通化县| 庆云县| 十堰市| 冕宁县| 安仁县| 资中县| 普兰店市| 顺平县| 兴宁市| 巫山县| 瓦房店市| 会同县| 霍邱县| 皋兰县| 白山市| 鸡西市| 南丹县| 凌海市| 甘孜县| 勐海县| 宝鸡市| 都兰县| 阿拉善左旗| 莆田市| 霍邱县| 清水县| 修文县| 涞源县| 黔东| 静安区| 五莲县| 保亭| 绵阳市|