作者 主題: shell script 如何抓取前一天的日期  (閱讀 7121 次)

0 會員 與 1 訪客 正在閱讀本文。

jochang6

  • 憂鬱的高中生
  • ***
  • 文章數: 177
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 於: 2005-04-14 11:13 »
請教大家:
shell script 如何抓取前一天的日期
前2天的日期 前3天的日期 前N天..............

抓不出來.........
現在只想到用今天日期減1的方式
但跨月就不正確了..... :cry:

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

jochang6

  • 憂鬱的高中生
  • ***
  • 文章數: 177
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #2 於: 2005-04-14 14:28 »
原來是我沒有詳細找
抱歉抱歉
感謝大大的提醒

jochang6

  • 憂鬱的高中生
  • ***
  • 文章數: 177
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #3 於: 2005-04-14 17:10 »
鳥哥說的方式在linux上有效
但這台是freebsd 5.3
試了一下,同樣的語法不行
也沒有man
help只有
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[[[cc]yy]mm]dd]HH]MM[.ss]] [+format]
覺得應該也有相同功能
該是[-v[+|-]val[ymwdHMS]]
但怎樣就是試不出來
正努力嘗試中

dark

  • 俺是博士!
  • *****
  • 文章數: 1581
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #4 於: 2005-04-14 17:48 »
小弟補充一下
date 中 --date 的格式是
--date="年-月-日  時:分:秒"

又 date 可運算時間 , 所以 , 10 天又 3 天可以是
date --date="$(date +"%y-%m-%d") 0:$(echo "(10+3)*24 | bc"):0" +"%y-%m-%d %H:%M:%S"
也可以累一點
date --date="$(date +"%y-%m-")$(echo "$(date +"%d")+10+3"|bc)$(date +" %H:%M:%S")"  +"%y-%m-%d %H:%M:%S"


而某兩時段距離
如 "2005-4-7 17:28:20" 到 "2006-14-13 0:0:0" 有多久?
2006-14-13 date 會自動換算成 2007-2-13
x=$(echo "$(date --date="2006-14-13 0:0:0" +"%s") - $(date --date="2005-4-7 17:28:21" +"%s")" | bc)
date --date="1999-12-31 23:59:$(echo "59 + 20 + $x" | bc)" +"%y-%m-%d %H:%M:%S"

因為 date +"%s" 是從 1970 算 , 不能用 0-0-0 的日期 , 所以取大於 1970 的整數年

ps: 剛學 php 時 , 小弟還不知 date 有此功能 , 所以都用 php-script 來運算
若 BSD 不可行 , 不知有支援 php 嗎?

phantom

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 2185
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #5 於: 2005-04-14 18:15 »
參考一下這一篇.
http://phorum.study-area.org/viewtopic.php?t=30015&highlight=last+day

雖然不太一樣, 不過異曲同工...
Linux 非萬能, 沒 Linux 萬萬不能.
root = God
apt-get install ultimate-horsepower

jochang6

  • 憂鬱的高中生
  • ***
  • 文章數: 177
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #6 於: 2005-04-15 08:59 »
喔!真是太棒了
原來date在freebsd可以這樣用! :P
以date -v-1y +%Y來說
-1y 就是比現在少1年  
單位可以為日或月或其他
+%Y表示日期顯示的格式
可以任意調整
以現在為2005年來說
比現在少1年就是去年2004
所以執行 date -v-1y +%Y
結果為
root@netflow [~] # date -v-1y +%Y
2004
感謝各位的指教

djs1101

  • 可愛的小學生
  • *
  • 文章數: 23
    • 檢視個人資料
shell script 如何抓取前一天的日期
« 回覆 #7 於: 2005-04-18 00:06 »
你也可使用更貼近人性的語法:
表示1天前
date -d '1 day ago'
表示2天前
date -d '2 day ago'
表示1個月前
date -d '1 month ago'
表示1年前
date -d '1 year ago'