Date

一個月的第一天和最後一天

  • August 2, 2021

給定兩個數字,月份和年份,我如何計算該月的第一天和最後一天?我的目標是輸出這三行:

  1. 月/年(文本形式的月份,但這是微不足道的)
  2. 每月的每一天:當日的星期幾的名稱:Fri。&星期六。& 太陽。

$$ … $$ 3. 月內天數:1 & 2 & 3

$$ … $$& 28 & .. ?

我正在尋找使用 GNUdate或 BSD date(在 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

引用自:https://unix.stackexchange.com/questions/43264