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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-11 03:04:13
字體:
供稿:網(wǎng)友

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`     :循環(huán)看 參數(shù)順序無關(guān),命令都一樣do    date -d "$day +$i day" +%Y%m%d   :正數(shù)可以省略符號    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后面每個空格之間都是一個獨立的參數(shù),分別看做整體,用雙引號格式能看的更為清楚,如date "+%Y%m%d %H:%M:%S" -d "+1 hour"

        i.             -d“-2 day20111111”指定輸出內(nèi)容

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

2,參數(shù)順序無關(guān),如

                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,獨立參數(shù)有無雙引號都行,

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

時間字符串的轉(zhuǎn)化:

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

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

注意:

1,二者用空格分割;

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

 

1 date字符串與時間戳格式互轉(zhuǎn):

A)字符串轉(zhuǎn)時間指定格式:

計算2011111前兩天    

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

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

 

B)字符串轉(zhuǎn)換為時間戳:

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

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

 

C)時間戳轉(zhuǎn)換為字符串:

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`          #加上一天的秒數(shù)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)轉(zhuǎn)為時間戳計算:

#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

#轉(zhuǎn)時間戳

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

echo $start_time

 

4 按日期循環(huán)執(zhí)行的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,兩個時間相加,計算出結(jié)果時間

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 時間差

原理:同樣轉(zhuǎn)成時間戳,然后計算天,時,分,秒

time1=$(($(date +%s -d '2010-01-01') -$(date +%s -d '2009-01-01 11:11:11')));

echo time1

將time1 / 60 秒,就變成分了。

 

4,小時的計算:

date#當(dāng)前時間

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

echo $current_time

start_time=`date -d"$current_time" "+%s"`#轉(zhuǎn)化為時間戳

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

上面兩個都是取當(dāng)前時間的分秒清零。

 

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

echo $t_time

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

echo $t2_time


上一篇:poj1000

下一篇:JVM相關(guān)知識

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 兰州市| 东平县| 定日县| 吴旗县| 辽宁省| 蓝田县| 平度市| 蒙山县| 宁蒗| 阜宁县| 兰考县| 临桂县| 肥西县| 南陵县| 靖江市| 中西区| 乡城县| 宜章县| 克山县| 逊克县| 个旧市| 平舆县| 七台河市| 盐池县| 临海市| 和平县| 锦州市| 盐城市| 金昌市| 嘉峪关市| 连南| 商南县| 万源市| 河池市| 庆元县| 改则县| 宜黄县| 汽车| 牡丹江市| 藁城市| 马鞍山市|