Command-Line
如何從命令行生成年/季日期?
我有興趣輸出目前年度季度以及上個月的年度季度的表示。
如果今天是 2012 年 1 月 1 日,我想得到
2012q1
和
2011q4
作為各自的輸出。
一種(有點難看)解決方案,使用 BASH 算術評估和 GNU
date
命令:echo $(date +%Y)q$(( ($(date +%-m)-1)/3+1 )) echo $(date -d "-1 month" +%Y)q$(( ($(date -d "-1 month" +%-m)-1)/3+1 ))
請注意,
%-m
防止date
0 填充,因此這仍然適用於 8 月和 9 月。
所有除以四的解決方案都會失敗,例如 11 月:
% echo $(( 11/4+1 )) 3
正確的數學是:
$(( (m-1)/3 +1 ))
因此,目前和上個月的季度將是:
echo curr ${y}q$(((m-1)/3+1)) if [ $m = 1 ]; then echo prev $((y-1))q4 else echo prev ${y}q$(((m-2)/3+1)) fi
只需要檢查十二個值,真的……
% for m in {1..12}; do echo $m Q$(((m-1)/3+1)); done 1 Q1 2 Q1 3 Q1 4 Q2 5 Q2 6 Q2 7 Q3 8 Q3 9 Q3 10 Q4 11 Q4 12 Q4