我可以通过 linux date 命令获得“基于 10 分钟前的上周一”吗?
例如
如果你有faketime
并且你date
是动态链接的:
faketime -f -10m date -d 'last monday' '+%F %T'
Run Code Online (Sandbox Code Playgroud)
使用ksh93
(仅限内置命令):
printf '%(%F %T)T\n' "$(printf '%(%Y.%m.%d)T' '10 minutes ago')-0 last monday"
Run Code Online (Sandbox Code Playgroud)
在这里,如果是上周日而不是上周一,你可以这样做:
date -d "$(date -d '10 minutes ago' +"%F -%u day")"
Run Code Online (Sandbox Code Playgroud)
或者如果是上周六:
date -d "$(date -d '10 minutes ago' +"%F -%w day -1 day")"
Run Code Online (Sandbox Code Playgroud)
但是对于上周一或一周中的任何其他一天,它涉及一些算术:
eval "date -d \"$(date -d '10 minutes ago' +'%F -$(((%u+5)%%7+1)) day')\""
Run Code Online (Sandbox Code Playgroud)
否则,您可以随时执行以下操作:
d=$(date -d 'last monday'); sleep 600; printf '%s\n' "$d"
Run Code Online (Sandbox Code Playgroud)
;-)
归档时间: |
|
查看次数: |
4546 次 |
最近记录: |