Shell 中常用 Date 日期的计算
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">正文</a></li><li><a href="#_label1">一、Date 基础格式化</a></li><li><a href="#_label2">二、Date 日期计算</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>正文</h2><p>在使用 <strong>Crontab</strong> 定时任务和 <strong>Shell</strong> 脚本切割 <strong>Nginx</strong> 日志文件时,要用到时间戳、当月、上月、下月、上月初、上月末、下月初、下月末等等,其中有些日期不能直接获取,需要经过一定的计算才能得到。</p>
<p style="text-align:center"><img alt="" src="https://img.jbzj.com/file_images/article/202306/2023062208565603.jpg" /></p>
<p>Shell Date</p>
<p class="maodian"><a name="_label1"></a></p><h2>一、Date 基础格式化</h2>
<table><tbody><tr><th>格式</th><th>输出</th><th>含义</th></tr><tr><td>date</td><td>2022年 11月 15日 星期二 19:10:21 CST</td><td>当前日期和时间</td></tr><tr><td>date +%Y</td><td>2022</td><td>年</td></tr><tr><td>date +%y</td><td>22</td><td>年</td></tr><tr><td>date +%m</td><td>11</td><td>月</td></tr><tr><td>date +%d</td><td>15</td><td>日</td></tr><tr><td>date +%D</td><td>11/15/22</td><td>当前日期</td></tr><tr><td>date +%Y%m%d</td><td>20221115</td><td>当前日期</td></tr><tr><td>date +%F</td><td>2022-11-15</td><td>当前日期</td></tr><tr><td>date +%H</td><td>19</td><td>时</td></tr><tr><td>date +%M</td><td>20</td><td>分</td></tr><tr><td>date +%S</td><td>30</td><td>秒</td></tr><tr><td>date +%s</td><td>1668511253</td><td>时间戳</td></tr><tr><td>date +%T</td><td>19:21:26</td><td>时分秒</td></tr><tr><td>date +%H:%M:%S</td><td>19:21:26</td><td>时分秒</td></tr><tr><td>date +%w</td><td>2</td><td>今天是周二</td></tr><tr><td>date +%W</td><td>46</td><td>今年的第46周</td></tr><tr><td>cal</td><td>(当月日历)</td><td>当月日历</td></tr></tbody></table>
<p class="maodian"><a name="_label2"></a></p><h2>二、Date 日期计算</h2>
<p>当前日期:2022-11-15</p>
<ul><li>前一天</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "-1 day"
# 2022年 11月 14日 星期一 19:34:01 CST
date -d "-1 day" +%F
# 2022-11-14
date -d "last day" +%F
# 2022-11-14</pre></div>
<ul><li>前三天</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "-3 day" +%F
# 2022-11-12
</pre></div>
<ul><li>后一天</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "1 day" +%F
# 2022-11-16
date -d "next day" +%F
# 2022-11-16
</pre></div>
<ul><li>上一月</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "-1 month" +%F
# 2022-10-15
date -d "last month" +%Y%m
# 202210
</pre></div>
<ul><li>下一月</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "1 month" +%F
# 2022-12-15
date -d "next month" +%Y-%m
# 2022-12
</pre></div>
<ul><li>上一年</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d "-1 years" +%F
# 2021-11-15
date -d "last year" +%Y%m
# 202111
</pre></div>
<ul><li>时间戳转日期</li></ul>
<div class="jb51code"><pre class="brush:bash;">date -d @1621563928
# 2021年 05月 21日 星期五 10:25:28 CST
</pre></div>
<ul><li>日期转时间戳</li></ul>
<div class="jb51code"><pre class="brush:bash;">date +%s -d "2022-10-21 10:38:48"
# 1666319928
</pre></div>
<ul><li>当月末日期和当月天数:先获取下个月第一天,减去一天</li></ul>
<div class="jb51code"><pre class="brush:bash;">nextMonthStart=`date -d "${date} +1 month" "+%Y%m01"`
currMonthEnd=`date -d "${nextMonthStart} -1 day" "+%F"`
currMonthDays=`date -d "${nextMonthStart} -1 day" "+%d"`
echo $currMonthEnd
# 2022-11-30
echo currMonthDays
# 30</pre></div>
<p>以上就是Shell 中常用 Date 日期的计算的详细内容,更多关于Shell Date日期计算的资料请关注琼殿技术社区其它相关文章!</p>
頁:
[1]