Date
在 UNIX 中以周數顯示所有日期
我知道獲取日期週數的命令是
date +%W
輸出:
03
現在,有沒有辦法給出一個星期數,它將顯示該週的所有日期?還是我應該寫一個腳本?
例如:
輸入:
03
輸出:
Jan 20 Jan 21 Jan 22 Jan 23 Jan 24 Jan 25 Jan 26
第一周(1 月 1 日、2 日、3,4 和 5 日)被視為第 0 週。所以第一周從 1 月 6 日開始(2014 年 1 月的第一個星期一),第二週從 13 日開始,第三週從 20 日開始
我決定撕掉這個stackoverflow問題並進一步適應你的問題:
#!/bin/bash week=$1 year=$2 date_fmt="+%b %d" week_num_of_Mon_1=$(date -d $year-01-01 +%W) week_day_of_Mon_1=$(date -d $year-01-01 +%u) if ((week_num_of_Mon_1)); then first_Mon=$year-01-01 else first_Mon=$year-01-$((01 + (7 - week_day_of_Mon_1 + 1) )) fi for nr_of_day_of_week in 0 1 2 3 4 5 6 do day_of_week=$(date -d "$first_Mon +$((week - 1)) week + $nr_of_day_of_week day" "$date_fmt") echo $day_of_week done
範例:
weekof 17 2014
結果:Apr 28 Apr 29 Apr 30 May 01 May 02 May 03 May 04
ncal -w
給你周數,你可以使用解析輸出awk
。我發現更容易的是安裝
python-dateutil
軟體包並使用:import sys, datetime from dateutil.relativedelta import relativedelta, MO week = int(sys.argv[1]) if len(sys.argv) == 2: year = datetime.date.today().year else: year = int(sys.argv[2]) beginning = datetime.date(year, 1, 1) + \ relativedelta(day = 4, weekday = MO(-1), weeks = week-1) for i in range(7): print beginning beginning += datetime.timedelta(1)
這為您提供了基於ISO週數的 7 天。