【问题标题】:How can we get weekday based on given date in unix我们如何根据unix中的给定日期获取工作日
【发布时间】:2023-03-26 01:50:02
【问题描述】:

%m-%d-%Y 格式的给定日期开始,我们应该确定它是哪一天。

例如:对于日期09-01-2017,输出应为Friday

【问题讨论】:

标签: bash shell datetime unix unix-timestamp


【解决方案1】:

非常简单。只需使用带有正确选项的 date 命令本身即可。

$ date -j -f '%m-%d-%Y' "09-01-2017" +'%A'
Friday

【讨论】:

  • 由于这既不是 GNU date 也不是 BSD date,您可能需要指定 date 它是什么。我猜是 macOS?
【解决方案2】:

如果你的约会对象是这样的:

d="09-01-2017"

您需要将其重新格式化为“YYYY-MM-DD”

date -d $(echo $d|awk -F- '{print $3 "-" $1 "-" $2}') +%A # DOW 

【讨论】:

  • +A 将输出“星期五”
【解决方案3】:
DayOfWeek=$(date +%A)

这将产生星期几monday-sunday 如果您的输入日期严格采用MM-DD-YYYY 格式,请使用以下格式

IFS='-' read -ra ADDR <<< "09-01-2017"
formattedDate=${ADDR[2]}-${ADDR[0]}-${ADDR[1]}
date -d  $formattedDate +%A

第一行标记日期的组成部分,第二行重新排列它们

【讨论】:

    【解决方案4】:

    这是我通常做的事情。我会使用日期功能。 你可以做'男人约会'并找到选项。

    $ d=2020-08-20 \
    $ date -d "$d" +%u \
    4 \
    $ date -d "$d" +%A \
    Thursday
    

    【讨论】:

      【解决方案5】:

      您可以将它作为 %m/%d%Y 传递,它会被 date 命令识别。

      $ date --date="`echo 09-01-2017| sed -e 's/-/\//g' `" +'%A'
      Friday
      

      要验证它,请传递 %F 以获取 ISO 格式

      $ date --date="`echo 09-01-2017| sed -e 's/-/\//g' `" +'%A %F'
      Friday 2017-09-01
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-19
        • 1970-01-01
        • 2020-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多