打印当前星期一的日期(以bash为单位)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了打印当前星期一的日期(以bash为单位)相关的知识,希望对你有一定的参考价值。
我希望以当前星期一的星期一格式“YYYYMMdd”(例如,今天是20110627)格式。从明天到周日,我还想打印星期一(今天)的日期。然后下周重复这个过程
答案
#monday
date -dmonday +%Y%m%d
#last monday
date -dlast-monday +%Y%m%d
#next monday
date -dnext-monday +%Y%m%d
#two mondays from now
date -d'monday+14 days' +%Y%m%d
#two mondays ago
date -d'monday-14 days' +%Y%m%d
#although, if you fancy yourself an Abraham Lincolin
date -d'monday-fortnight ago' +%Y%m%d #2 weeks ago
date -d'monday+fortnight' +%Y%m%d #2 weeks from now
#Monday Next Year
date -d'52+monday' +%Y%m%d
#However, Monday Last Year
date -d'52-monday' +%Y%m%d #DOES NOT WORK
#you can try a day other than monday
#and format this differently.
如果一个范围是你的事后你可能需要做一些事情
#Tuesday to Sunday
#since today is monday, I'll use Tuesday
echo `date -dtuesday +%Y%m%d-``date -dnext-sunday +%Y%m%d`
哪个会输出:
20110628-20110703
请注意,这仅适用于GNU日期
我读过:
无法支持
-d
的Solaris版本的日期可以通过替换sunfreeware.com版本的日期来解决
另一答案
对于我们这些没有GNU日期的人(比如我们的OS Xers),我们可能会有“-v”参数
然后你可以这样做:
# Most recent Monday
date -v -Mon
# Output as of this writing
Mon Jun 24 12:35:48 EDT 2013
date -v -Mon "+%Y%m%d"
# Outputs
20130624
如果今天是星期一,在我目前的情况下星期四,这似乎也不是问题
# Today's date
date
# Outputs
Thu Jun 27 12:41:39 EDT 2013
# Most recent Thursday
date -v -Thu
# Outputs
Thu Jun 27 12:41:46 EDT 2013
另一答案
试试这个以获取当前星期一的日期。
wd=`date +%u`;
let wd=wd-1;
mon=`date --date="-$wd day" +%Y%m%d`;
另一答案
我认为这实际上回答了所要求的内容:
date -d "next monday - 7 days"
以上是关于打印当前星期一的日期(以bash为单位)的主要内容,如果未能解决你的问题,请参考以下文章
获取自 Linux 上的 Epoch、Bash 以来的当前时间(以秒为单位)