如何使用 unix 日期函数计算一年中的季度

how to use unix date function to calculate quarter of the year

在 unix 中,通过使用 date 命令,我知道我可以像这样提取给定日期和 ISO-8601 的信息:

$ date --iso-8601 -d 20131229
2013-12-29

Iso 周数:

$ date -d 20131229 +%V
52

ISO 星期几:

$ date -d 20131229 +%u
7

有没有办法计算一年中的季度?

没有用于计算季度的日期设置,因此您必须以不同的方式进行计算。这是一个计算季度的公式,假设 1-3 个月是第一季度等。 要计算月份,请使用:

$(date -d 20130129 +%m)

月份从零开始,因此要将其转换为整数,请使用:

$((10#$(date -d 20130129 +%m)))

然后使月数从零开始,以计算零基季度:

$(($((10#$(date -d 20130129 +%m))) - 1))

然后计算基于零的季度并将其调整为季度:

echo $(($(($((10#$(date -d 20130129 +%m))) - 1)) / 3 + 1))

所以这是怎么做的(和测试作为证明):

echo $(($(($((10#$(date -d 20130129 +%m))) - 1)) / 3 + 1))
result:1
echo $(($(($((10#$(date -d 20130228 +%m))) - 1)) / 3 + 1))
result:1
echo $(($(($((10#$(date -d 20130329 +%m))) - 1)) / 3 + 1))
result:1
echo $(($(($((10#$(date -d 20130429 +%m))) - 1)) / 3 + 1))
result:2
echo $(($(($((10#$(date -d 20130529 +%m))) - 1)) / 3 + 1))
result:2
echo $(($(($((10#$(date -d 20130629 +%m))) - 1)) / 3 + 1))
result:2
echo $(($(($((10#$(date -d 20130729 +%m))) - 1)) / 3 + 1))
result:3
echo $(($(($((10#$(date -d 20130829 +%m))) - 1)) / 3 + 1))
result:3
echo $(($(($((10#$(date -d 20130929 +%m))) - 1)) / 3 + 1))
result:3
echo $(($(($((10#$(date -d 20131029 +%m))) - 1)) / 3 + 1))
result:4
echo $(($(($((10#$(date -d 20131129 +%m))) - 1)) / 3 + 1))
result:4
echo $(($(($((10#$(date -d 20131229 +%m))) - 1)) / 3 + 1))
result:4