我將設置一個日期變量(Say '08 -JUN-2011'),並且我想根據該日期進行一些計算,即
1.必須獲得給定的第一天一天的月份。
2.給定日期的月份的前一日期。
3.給定日期的最後一天。Linux腳本 - 日期操作
我所知道的只是使用當前系統日期和時間進行操作,但不知道如何使用用戶定義的日期來實現。我需要使用Linux shell腳本來實現這一點。
任何幫助將不勝感激。
感謝,
KARTHIK
我將設置一個日期變量(Say '08 -JUN-2011'),並且我想根據該日期進行一些計算,即
1.必須獲得給定的第一天一天的月份。
2.給定日期的月份的前一日期。
3.給定日期的最後一天。Linux腳本 - 日期操作
我所知道的只是使用當前系統日期和時間進行操作,但不知道如何使用用戶定義的日期來實現。我需要使用Linux shell腳本來實現這一點。
任何幫助將不勝感激。
感謝,
KARTHIK
下面介紹如何使用GNU日期進行操作:
#!/bin/sh
USER_DATE=JUN-08-2011
# first day of the month
FIRST_DAY_OF_MONTH=$(date -d "$USER_DATE" +%b-01-%Y)
PREVIOUS_DAY=$(date -d "$USER_DATE -1 days" +%b-%d-%Y)
# last day of the month
FIRST_DAY_NEXT_MONTH=$(date -d "$USER_DATE +1 month" +%b-01-%Y)
LAST_DAY_OF_MONTH=$(date -d "$FIRST_DAY_NEXT_MONTH -1 day" +%b-%d-%Y)
echo "User date: $USER_DATE"
echo "1. First day of the month: $FIRST_DAY_OF_MONTH"
echo "2. Previous day: $PREVIOUS_DAY"
echo "3. Last day of the month: $LAST_DAY_OF_MONTH"
輸出是:
User date: JUN-08-2011
1. First day of the month: Jun-01-2011
2. Previous day: Jun-07-2011
3. Last day of the month: Jun-30-2011
哦,非常感謝,這真的很有用。每個人的回答都很好,Gregg的回答對我來說最適合。謝謝! – Karthik 2011-06-11 12:35:43
這將在shell腳本將被進行卷積。你最好在perl中使用Date :: Manip,或者在另一個全功能語言中使用類似的東西。但是,我可以想出一些使用date命令執行此操作的方法。首先,你可以使用一個--date參數設定日期的起點,就像這樣:
$ date --date='08-JUN-2011' Wed Jun 8 00:00:00 EDT 2011
你可以得到一個日期是這樣的:
$ date --date='08-JUN-2011 -1 days' Tue Jun 7 00:00:00 EDT 2011
最後一天這個月,我只會從31號回到日期不會失敗。你可以檢查$?對於
$ date --date='31-JUN-2011';echo $? date: invalid date `31-JUN-2011' 1 $ date --date='30-JUN-2011';echo $? Thu Jun 30 00:00:00 EDT 2011 0
對於本月的第一天......這通常是01 :)
當你使用Linux,那麼hhopefully你有GNU date命令可用。它幾乎可以處理任何你想到的相對日期的描述。
下面是一些例子
date --date="last month" +%Y-%m-%d
date --date="yesterday" +%Y-%m-%d
date --date="last month" +%b
x=$(date --date "10 days ago" +%Y/%m/%d)
要了解更多有關它看GNU Date examples
一旦你使用它的一些,你可以通過快捷的信息與date --help
收集,顯示所有的基本選項(但有時很難解釋。)
我希望這有助於。
感謝您的參考鏈接和支持! – Karthik 2011-06-11 12:36:57
$ date +%m/01/%Y
我來到這裏尋找一種方式來獲得當前的第一天月。
使用dateutils' dround工具:
本月:
$ dround today -1
2014-02-01
上月
$ dround today -31
2014-01-31
末當月的一天:
$ dround today +31
2014-02-28
湊rse可以使用自定義日期而不是today
,這個想法是向下舍入或達到期望的當月日期,例如,下一個給出的月份2010-10-04:
$ dround 2010-10-04 +1d
2010-11-01
對於#1,你的意思是星期幾(即星期一至星期五?),它將始終爲'01' dayNum,對吧? ;-) 祝你好運。 – shellter 2011-06-10 15:26:52