<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://www.gentoo-zh.org/extern.php?action=feed&amp;tid=554&amp;type=rss" rel="self" type="application/rss+xml" />
		<title><![CDATA[Gentoo中文社区 / 日期加减]]></title>
		<link>https://www.gentoo-zh.org/viewtopic.php?id=554</link>
		<description><![CDATA[日期加减 最近发表的帖子。]]></description>
		<lastBuildDate>Sun, 13 Nov 2022 10:14:14 +0000</lastBuildDate>
		<generator>FluxBB</generator>
		<item>
			<title><![CDATA[日期加减]]></title>
			<link>https://www.gentoo-zh.org/viewtopic.php?pid=591#p591</link>
			<description><![CDATA[<p>对日期进行加减，建议先转换成1970-01-01 UTC之后的秒数，然后再进行加减<br />1.转换成1970-01-01 UTC之后秒数:start_date=$(date -d&#039;080826&#039; +%s)<br /> 2.进行加减:end_date=$(expr $start_date + n \* 86400)<br />其中，n是需要增加的天数，86400是一天的秒数<br />3.转换成需要的日期格式:end_date=$(date -d&quot;1970-01-01 UTC $end_date seconds&quot; +%y%m%d)</p><br /><br /><p>时间加减<br />如：1990-01-01 01:01:01&#160; 加上 1小时 20分<br />处理方法：<br />a.将基础时间转为时间戳<br />time1=$(date +%s -d &#039;1990-01-01 01:01:01&#039;)<br />echo $time1<br />631126861 【时间戳】<br />b.将增加时间变成秒<br />[root@localhost ~]# time2=$((1*60*60+20*60))<br />[root@localhost ~]# echo $time2<br />4800<br />c.两个时间相加，计算出结果时间<br />time1=$(($time1+$time2))<br />time1=$(date +%Y-%m-%d\ %H:%M:%S -d &quot;1970-01-01 UTC $time1 seconds&quot;);<br />echo $time1<br />1990-01-01 02:21:01<br />2。时间差计算方法<br />如：2010-01-01 与 2009-01-01 11:11:11 时间差<br />原理：同样转成时间戳，然后计算天，时，分，秒<br />time1=$(($(date +%s -d &#039;2010-01-01&#039;) - $(date +%s -d &#039;2009-01-01 11:11:11&#039;)));<br />echo time1<br />将time1 / 60 秒，就变成分了。</p><br /><br /><p>shell时间（字符串和时间戳转换） <br />在shell中，字符串转换为时间戳可以这样做：<br />date -d &quot;2010-10-18 00:00:00&quot; +%s<br />输出形如：<br />1287331200<br />其中，-d参数表示显示指定的字符串所表示的时间，+%s表示输出时间戳。<br />而时间戳转换为字符串可以这样做：<br />date -d @1287331200<br />输出形如：<br />Mon Oct 18 00:00:00 CST 2010<br />如果要转换成“2010-10-18 00:00:00”这种形式的时间戳，则这样做：<br />date -d &quot;1970-01-01 UTC 1287331200 seconds&quot; &quot;+%F %T&quot;<br />输出形如：<br />2010-10-18 00:00:10<br />再多废话一句，如果只要输出日期，不要时间，则去掉 %T 就可以了：<br />date -d &quot;1970-01-01 UTC 1287331200 seconds&quot; +%F<br />输出形如：<br />2010-10-18</p><p>年月日小时分钟<br />file_time=`cat /home/hadoop/readfile/datatime.txt`<br />time_1=$(date -d &quot;`echo ${file_time} | sed &#039;s/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3/&#039;`&quot; +%s)<br />next_1=`expr ${time_1} + 300`<br />next_time=`date -d &quot;1970-01-01 UTC ${next_1} seconds&quot; &quot;+%Y%m%d%H%M&quot;`<br />年月日小时分钟秒<br />echo ${file_time} | sed &#039;s/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3:/&#039;</p><p>date -d &quot;`echo 201606210000 | sed &#039;s/\([0-9]\{8\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2:\3:/&#039;`&quot; +%s<br />date -d &quot;1970-01-01 UTC 1466438400 seconds&quot; &quot;+%Y%m%d%H%M%S&quot;</p><br /><p>以下还有一些时间的计算方法：<br /> echo $(date --date=&#039;3 day&#039;)&#160; //当天日期+3天<br />Fri Jan 16 11:55:02 CST 2015</p><p> echo $(date --date=&#039;3 day ago&#039;)&#160; //当天日期-3天<br />Sat Jan 10 11:55:10 CST 2015</p><p> echo $(date --date=&#039;3 month&#039;)&#160; //当天日期+3月<br />Mon Apr 13 11:55:17 CST 2015</p><p> echo $(date --date=&#039;3 month ago&#039;)&#160; //当天日期-3朋<br />Mon Oct 13 11:55:25 CST 2014</p><p> echo $(date --date=&#039;3 year&#039;)&#160; //当天日期+3年<br />Sat Jan 13 11:55:32 CST 2018</p><p> echo $(date --date=&#039;3 year ago&#039;)&#160; //当天日期-3年<br />Fri Jan 13 11:55:38 CST 2012</p><p> echo $(date --date=&#039;3 minute &#039;)&#160; //当天日期+3秒<br />Tue Jan 13 11:58:44 CST 2015</p><p> echo $(date --date=&#039;3 minute ago&#039;)&#160; //当天日期-3秒<br />Tue Jan 13 11:52:52 CST 2015</p><p> echo $(date --date=&#039;3 hour ago&#039;)&#160; //当天日期-3小时<br />Tue Jan 13 08:56:00 CST 2015</p><p> echo $(date --date=&#039;3 hour&#039;)&#160; //当天日期+3小时<br />Tue Jan 13 14:56:06 CST 2015</p>]]></description>
			<author><![CDATA[dummy@example.com (batsom)]]></author>
			<pubDate>Sun, 13 Nov 2022 10:14:14 +0000</pubDate>
			<guid>https://www.gentoo-zh.org/viewtopic.php?pid=591#p591</guid>
		</item>
	</channel>
</rss>
