【问题标题】:how to use unix date function to calculate quarter of the year [duplicate]如何使用unix日期函数计算一年中的季度[重复]
【发布时间】:2015-04-28 22:56:11
【问题描述】:

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

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

iso 周数:

$ date -d 20131229 +%V
52

ISO 星期几:

$ date -d 20131229 +%u
7

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

【问题讨论】:

    标签: date unix unix-timestamp


    【解决方案1】:

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

    【讨论】:

    • 这很棒。感谢您向我展示。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多