unix date 命令獲取某日期的前一天

2022-07-03 18:00:12 字數 1024 閱讀 4908

最原始的辦法是寫個比較繁瑣的函式,知道每個月分別是多少天,還要處理一下閏年的情況――這也有點太繁瑣了。

稍微看一下 date 命令,就發現利用它可以很方便的寫出乙個非常穩定的函式。date 可以通過 -d 指定乙個日期,然後用指定的格式輸出。-d 不僅可以接受「2009-03-01″ 或者 yesterday 這樣的格式,還可以接受乙個從 1970 年開始至今的秒數,當然也可以指定日期輸出這樣的秒數。如:

1 [tmn@zhfx1 zhaoxj]$ date +%s

21340181531

3 [tmn@zhfx1 zhaoxj]$ date-d @1340181531 +%y-%m-%d

42012-06-20

這樣,事情就變得很簡單了。先用 date 命令將該日期轉換成秒數,減去一天的秒數 86400,然後再轉化成正常易讀的日期格式,就可以了,不需要考慮複雜的大小月以及閏年問題。

用上述思路寫個函式:求出給定日期所在周的星期一是幾號

1

get_day_monday( ) +%s`910

#給定日期為星期幾

11 v_week=`date -d $ +%u`

1213

#星期一是前幾天

14 days_before=$((v_week - 1

))15

16#距離星期一有多少秒

17 seconds_before=$((days_before * 86400

))18

19#星期一距離1970多少秒

20 monday_seconds=$((v_seconds -seconds_before))

2122 v_monday=`date -d @$monday_seconds +%y-%m-%d`

2324}25

26 get_day_monday 2012-06-20

2728

echo $

測試結果:

2012-06-18

unix date 命令獲取某日期的前一天

最原始的辦法是寫個比較繁瑣的函式,知道每個月分別是多少天,還要處理一下閏年的情況 這也有點太繁瑣了。稍微看一下 date 命令,就發現利用它可以很方便的寫出乙個非常穩定的函式。date 可以通過 d 指定乙個日期,然後用指定的格式輸出。d 不僅可以接受 2009 03 01 或者 yesterday...

Linux date 命令獲取某日期的前一天

date d 20150303 1day y m d date d 2 month 20131231 y m d 獲得2013年12月31日以後2個月的日期 這是最簡單的做法 稍微看一下 date 命令,就發現利用它可以很方便的寫出乙個非常 stable 的函式。date 可以通過 d 指定乙個日期...

計算某日期為當年第幾周演算法

1,資料庫計算 一周是從週日到週六 select datename week,getdate 一周是從周一到週日 set datefirst 1 select datename week,getdate 指示一周的第一天的乙個整數。可以是下列值之一。值一周的第一天是 1 星期一2 星期二3 星期三4...