从一年中获得一年中的一周

时间:2010-07-12 09:48:29

标签: bash solaris date

鉴于一年中的某一天,如何使用Bash获得一周

2 个答案:

答案 0 :(得分:39)

使用date命令,您可以使用“%V”格式参数显示一年中的一周:

/bin/date +%V

您可以告诉date使用“-d”参数解析和格式化自定义日期而不是当前日期:

/bin/date -d "20100215"

然后,混合使用这两个选项,您可以将自定义格式应用于自定义日期:

/bin/date -d "20100215" +%V

答案 1 :(得分:4)

如果你正在使用GNU date,你可以使用这样的相对日期:

$ doy=193
$ date -d "Jan 1 +$((doy -1)) days" +%U
28

这会给你一个非常简单的答案,但不依赖于date

$ echo $((doy / 7))

,它不关注星期几。

以下是周编号系统的演示:

$ printf "\nDate\t\tDOW\tDOY\t%%U %%V %%W\n"; \
for d in "Jan "{1..4}" 2010" \
"Dec "{25..31}" 2010" \
"Jan "{1..4}" 2011"; \
do printf "%s\t" "$d"; \
date -d "$d" +"%a%t%j%t%U %V %W"; \
done

Date            DOW     DOY     %U %V %W
Jan 1 2010      Fri     001     00 53 00
Jan 2 2010      Sat     002     00 53 00
Jan 3 2010      Sun     003     01 53 00
Jan 4 2010      Mon     004     01 01 01
Dec 25 2010     Sat     359     51 51 51
Dec 26 2010     Sun     360     52 51 51
Dec 27 2010     Mon     361     52 52 52
Dec 28 2010     Tue     362     52 52 52
Dec 29 2010     Wed     363     52 52 52
Dec 30 2010     Thu     364     52 52 52
Dec 31 2010     Fri     365     52 52 52
Jan 1 2011      Sat     001     00 52 00
Jan 2 2011      Sun     002     01 52 00
Jan 3 2011      Mon     003     01 01 01
Jan 4 2011      Tue     004     01 01 01