获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周
Posted
技术标签:
【中文标题】获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周【英文标题】:Get Monday and Sunday etc.. for a week for any date as parameter in Unix 【发布时间】:2013-10-07 09:52:25 【问题描述】:如何获取一个日期一周中的周一和周日的日期?
这给出了“最后一个”星期一的日期:
date -dlast-monday +%Y%m%d
我想传递一个日期作为参数来查找该周的星期一和星期日。基本上,我想获得一周的周日和周一,任何日期,而不仅仅是上周一。
【问题讨论】:
【参考方案1】:试试这个:
export day=2013-10-01
date -d "$day -$(date -d $day +%w) days"
这将始终打印给定日期(或日期本身)之前的星期日。
date -d "$day -$(date -d $day +%u) days"
这将始终打印给定日期之前的星期日(而不是日期本身)。
对于星期一,您需要添加+ 1 day
:
date -d "$day -$(date -d $day +%u) days + 1 day"
您还应该考虑您想在哪个日期获得星期一或星期日(这不是很清楚)。这还取决于您将星期日视为一周的第一天还是最后一天。
【讨论】:
如何以 YYYY-MM-DD 格式输出此输出? 追加+%F
到命令行:date -d "$day -$(date -d $day +%u) days" +%F
【参考方案2】:
date
可以像这样在命令行上解析日期:
date -j -f %s 1380628152
这是自 UNIX 纪元以来的日期+时间,以秒为单位。您可以将上面的命令与您的命令结合起来。 -j 表示您不想实际设置日期。 -f 指定一个 strftime 字符串,用于解析命令行上的日期。
请注意,这是在 BSD 系统上,看起来您在 GNU 系统上,迄今为止有不同的选项(但它必须支持类似的东西)。
【讨论】:
以上是关于获取星期一和星期日等。对于任何日期作为 Unix 中的参数一周的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript - 获取一周中下一天的日期(对于每一天)