Date
一個月的第一天和最後一天
給定兩個數字,月份和年份,我如何計算該月的第一天和最後一天?我的目標是輸出這三行:
- 月/年(文本形式的月份,但這是微不足道的)
- 每月的每一天:當日的星期幾的名稱:Fri。&星期六。& 太陽。
$$ … $$ 3. 月內天數:1 & 2 & 3
$$ … $$& 28 & .. ?
我正在尋找使用 GNU
date
或 BSDdate
(在 OS X 上)的解決方案。
# Last month: l_first_date=$(date -d "`date +%Y%m01` -1 month" +%Y-%m-%d) l_last_date=$(date -d "`date +%Y%m01` -1 day" +%Y-%m-%d) # This month: t_first_date=$(date -d "`date +%Y%m01`" +%Y-%m-%d) t_last_date=$(date -d "`date +%Y%m01` +1 month -1 day" +%Y-%m-%d) # Next month: n_first_date=$(date -d "`date +%Y%m01` +1 month" +%Y-%m-%d) n_last_date=$(date -d "`date +%Y%m01` +2 month -1 day" +%Y-%m-%d) # Print everything echo "Last month: $l_first_date to $l_last_date" echo "This month: $t_first_date to $t_last_date" echo "Next month: $n_first_date to $n_last_date"
我會誠實的;從您提出問題的方式來看,我覺得您已經分配了一些作業,所以我將在答案中留下幾個步驟作為練習:
您需要仔細查看
date
手冊頁;尤其是-d
標誌,它允許您檢查任何一天。Y 年 M 月的第一天將是“M/01/Y”獲得當月的最後一天,最好的辦法是在給定的月份數上加 1,然後在日期中減去一天。
提示:
date
實際上可以接受一些廣泛的算術;例如,我可以說date -d "01/07/2012 + 1 month - 1 day"
,它會給我正確的答案。您可以通過研究手冊頁的“格式”部分了解如何在 2) 和 3) 中顯示所需的輸出
date
。提示:查看
%a
和%d