如何使用 date 命令将诸如“monday week 40”之类的内容转换为 ISO 日期?
我正在玩这样的事情:
date --date='monday week 40' +'%Y-%m-%d'
Run Code Online (Sandbox Code Playgroud)
我要搜索的日期是 2011-10-03。
但是我的问题是这个日期字符串无效,所以我需要另一种方法来解决这个问题。
/谢谢
另一种方法:
date --date "+$((40-$(date +%V)))weeks last monday" +"%F"
Run Code Online (Sandbox Code Playgroud)
真的很难看,而且可能只适用于 GNU date:
date -d "$( date -d "$( date +'%Y-01-01' ) +40 weeks") -$( date -d "$( date +'%Y-01-01' ) +40 weeks" +'%w' ) days+1 day" +'%Y-%m-%d'
Run Code Online (Sandbox Code Playgroud)
仅针对 10 月 3 日的示例进行了测试,对于其他一些情况可能会失败。
更新:如果您有非英语语言环境,则需要指定内部日期的输出才能开始工作。(%F 只是 YYYY-MM-DD)。
date -d "$(date -d "$(date +'%Y-01-01') +40 weeks" +"%F") -$(date -d "$(date +'%Y-01-01') +40 weeks" +%w) days +1 day" +"%F"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6098 次 |
| 最近记录: |