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

时间:2015-04-28 22:56:11

标签: date unix unix-timestamp

在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 个答案:

答案 0 :(得分:2)

没有日期设置来计算季度,所以你必须采取不同的方式。这是一个计算季度的公式,假设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