{"id":3055,"date":"2016-12-14T10:20:07","date_gmt":"2016-12-14T02:20:07","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=3055"},"modified":"2016-12-14T10:20:07","modified_gmt":"2016-12-14T02:20:07","slug":"shell%e4%b8%ad%e5%a6%82%e4%bd%95%e8%ae%a1%e7%ae%97%e4%b8%a4%e4%b8%aa%e6%97%a5%e6%9c%9f%e4%b9%8b%e9%97%b4%e7%9a%84%e5%a4%a9%e6%95%b0%ef%bc%9f","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/3055.html","title":{"rendered":"Shell\u4e2d\u5982\u4f55\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1f"},"content":{"rendered":"<p>=Start=<\/p>\n<h4 id=\"Shell\u4e2d\u5982\u4f55\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1f-\u7f18\u7531\uff1a\">\u7f18\u7531\uff1a<\/h4>\n<p>\u5728\u7a0b\u5e8f\u4e2d\u7528\u5230\u548c\u65e5\u671f\u76f8\u5173\u7684\u5faa\u73af\u65f6\uff0c\u53ef\u80fd\u4f1a\u9700\u8981\u63d0\u524d\u786e\u5b9a\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1b\u8fd8\u6709\u5c31\u662f\u5728\u65e5\u5e38\u7684\u4e00\u4e9b\u8bb0\u5f55\u4e2d\u4e5f\u4f1a\u60f3\u4e86\u89e3\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1b\u603b\u4e4b\uff0c\u8fd9\u6837\u7684\u9700\u6c42\u662f\u5f88\u591a\u7684\u3002<\/p>\n<h4 id=\"Shell\u4e2d\u5982\u4f55\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1f-\u6b63\u6587\uff1a\">\u6b63\u6587\uff1a<\/h4>\n<h5 id=\"Shell\u4e2d\u5982\u4f55\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1f-\u53c2\u8003\u89e3\u7b54\uff1a\">\u53c2\u8003\u89e3\u7b54\uff1a<\/h5>\n<p>\u4f7f\u7528GNU\u7684date\u547d\u4ee4\uff0c\u5b83\u5141\u8bb8\u4f60\u901a\u8fc7\u300c<code>-d<\/code>\u300d\u9009\u9879\u6307\u5b9a\uff08\u5b83\u80fd\u8bc6\u522b\u7684\uff09\u4efb\u610f\u683c\u5f0f\u7684\u65e5\u671f\uff0c\u7136\u540e\u901a\u8fc7\u300c<code>+%s<\/code>\u300d\u9009\u9879\u5c06\u65e5\u671f\u8f6c\u6362\u6210\u4ece\u300c1970-01-01 00:00:00 UTC\u300d\u4ee5\u6765\u7ecf\u8fc7\u7684\u79d2\u6570\uff0c\u4e24\u8005\u76f8\u51cf\u7136\u540e\u9664\u4ee5\u4e00\u5929\u4e2d\u5305\u542b\u7684\u79d2\u6570\uff0824*60*60=86400\u79d2\uff09\u5373\u53ef\u77e5\u9053\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u76f8\u8ddd\u7684\u5929\u6570\u3002<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div id=\"highlighter_159177\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">datediff() {<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">d1=$(date -d\u00a0<\/code><code class=\"java string\">\"$1\"<\/code>\u00a0<code class=\"java plain\">+%s)<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">d2=$(date -d\u00a0<\/code><code class=\"java string\">\"$2\"<\/code>\u00a0<code class=\"java plain\">+%s)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">echo $(( (d1 - d2) \/\u00a0<\/code><code class=\"java value\">86400<\/code>\u00a0<code class=\"java plain\">)) days<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">$ datediff\u00a0<\/code><code class=\"java string\">'1 Nov'<\/code>\u00a0<code class=\"java string\">'1 Aug'<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java value\">91<\/code>\u00a0<code class=\"java plain\">days<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java plain\">$ datediff\u00a0<\/code><code class=\"java value\">2016<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">10<\/code>\u00a0<code class=\"java value\">2016<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">4<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java value\">6<\/code>\u00a0<code class=\"java plain\">days<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java plain\">$ datediff\u00a0<\/code><code class=\"java value\">2016<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">10<\/code>\u00a0<code class=\"java value\">2016<\/code><code class=\"java plain\">\/<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">\/<\/code><code class=\"java value\">4<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java value\">6<\/code>\u00a0<code class=\"java plain\">days<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java plain\">$ datediff\u00a0<\/code><code class=\"java value\">2016<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">4<\/code>\u00a0<code class=\"java value\">2016<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">12<\/code><code class=\"java plain\">-<\/code><code class=\"java value\">10<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java plain\">-<\/code><code class=\"java value\">6<\/code>\u00a0<code class=\"java plain\">days<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>&amp;<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div id=\"highlighter_239428\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">bash-<\/code><code class=\"java value\">4.2<\/code><code class=\"java plain\">$ mysql &lt;&lt;&lt;\u00a0<\/code><code class=\"java string\">\"select datediff(current_date,'1980-06-14')\"<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">datediff(current_date,<\/code><code class=\"java string\">'1980-06-14'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java value\">13332<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">bash-<\/code><code class=\"java value\">4.2<\/code><code class=\"java plain\">$ psql &lt;&lt;&lt;\u00a0<\/code><code class=\"java string\">\"select current_date-'1980-06-14'\"<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0<\/code><code class=\"java plain\">?column?<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">----------<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java value\">13332<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java plain\">(<\/code><code class=\"java value\">1<\/code>\u00a0<code class=\"java plain\">row)<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java plain\">bash-<\/code><code class=\"java value\">4.2<\/code><code class=\"java plain\">$ sqlite2 &lt;&lt;&lt;\u00a0<\/code><code class=\"java string\">\"select julianday('now')-julianday('1980-06-14');\"<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java value\">13332.1524537035<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>&amp;<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div id=\"highlighter_927892\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">$ echo $(($(($(date -d\u00a0<\/code><code class=\"java string\">\"2010-06-01\"<\/code>\u00a0<code class=\"java string\">\"+%s\"<\/code><code class=\"java plain\">) - $(date -d\u00a0<\/code><code class=\"java string\">\"2010-05-15\"<\/code>\u00a0<code class=\"java string\">\"+%s\"<\/code><code class=\"java plain\">))) \/\u00a0<\/code><code class=\"java value\">86400<\/code><code class=\"java plain\">))<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<p>&amp;<\/p>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeContent panelContent pdl\">\n<div id=\"highlighter_679257\" class=\"syntaxhighlighter sh-confluence nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\" title=\"Hint: double-click to select code\">\n<div class=\"line number1 index0 alt2\"><code class=\"java plain\">$ cat &gt; datediff.sh<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">#!\/bin\/bash<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java plain\">firstdate=$<\/code><code class=\"java value\">1<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java plain\">secondate=$<\/code><code class=\"java value\">2<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java plain\">fullyear=$(date -d@$(( ( $(date -ud\u00a0<\/code><code class=\"java string\">\"$secondate\"<\/code>\u00a0<code class=\"java plain\">+<\/code><code class=\"java string\">'%s'<\/code><code class=\"java plain\">) - $(date -ud\u00a0<\/code><code class=\"java string\">\"$firstdate\"<\/code>\u00a0<code class=\"java plain\">+<\/code><code class=\"java string\">'%s'<\/code><code class=\"java plain\">) ) )) +<\/code><code class=\"java string\">'%Y years %m months %d days %H hours %M minutes %S seconds'<\/code><code class=\"java plain\">)<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java plain\">yearsubtraction=$(( $(echo $fullyear | sed -r\u00a0<\/code><code class=\"java string\">'s\/^([0-9]+).*\/\\1\/'<\/code><code class=\"java plain\">) -\u00a0<\/code><code class=\"java value\">1970<\/code>\u00a0<code class=\"java plain\">))<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java keyword\">if<\/code>\u00a0<code class=\"java plain\">[ $yearsubtraction -le\u00a0<\/code><code class=\"java string\">'0'<\/code>\u00a0<code class=\"java plain\">]; then<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">echo $fullyear | sed -r\u00a0<\/code><code class=\"java string\">\"s\/^([0-9]+) years \/\/\"<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java keyword\">else<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">echo $fullyear | sed -r\u00a0<\/code><code class=\"java string\">\"s\/^([0-9]+) \/$(printf %02d $yearsubtraction) \/\"<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java plain\">fi<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java plain\">$ chmod +x datediff.sh<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"java plain\">$ .\/datediff.sh\u00a0<\/code><code class=\"java string\">'2013-07-22 11:55:19'<\/code>\u00a0<code class=\"java string\">'2015-12-25 02:00:13'<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"java value\">02<\/code>\u00a0<code class=\"java plain\">years\u00a0<\/code><code class=\"java value\">06<\/code>\u00a0<code class=\"java plain\">months\u00a0<\/code><code class=\"java value\">04<\/code>\u00a0<code class=\"java plain\">days\u00a0<\/code><code class=\"java value\">16<\/code>\u00a0<code class=\"java plain\">hours\u00a0<\/code><code class=\"java value\">04<\/code>\u00a0<code class=\"java plain\">minutes\u00a0<\/code><code class=\"java value\">54<\/code>\u00a0<code class=\"java plain\">seconds<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java plain\">$ .\/datediff.sh\u00a0<\/code><code class=\"java string\">'2013-07-22 11:55:19'<\/code>\u00a0<code class=\"java string\">'2013-12-25 02:00:13'<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java value\">06<\/code>\u00a0<code class=\"java plain\">months\u00a0<\/code><code class=\"java value\">05<\/code>\u00a0<code class=\"java plain\">days\u00a0<\/code><code class=\"java value\">16<\/code>\u00a0<code class=\"java plain\">hours\u00a0<\/code><code class=\"java value\">04<\/code>\u00a0<code class=\"java plain\">minutes\u00a0<\/code><code class=\"java value\">54<\/code>\u00a0<code class=\"java plain\">seconds<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n<h5 id=\"Shell\u4e2d\u5982\u4f55\u8ba1\u7b97\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1f-\u53c2\u8003\u94fe\u63a5\uff1a\">\u53c2\u8003\u94fe\u63a5\uff1a<\/h5>\n<ul>\n<li><a class=\"external-link\" href=\"http:\/\/stackoverflow.com\/questions\/4946785\/how-to-find-the-difference-in-days-between-two-dates\" target=\"_blank\" rel=\"nofollow\">http:\/\/stackoverflow.com\/questions\/4946785\/how-to-find-the-difference-in-days-between-two-dates<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/stackoverflow.com\/questions\/3385003\/shell-script-to-get-difference-in-two-dates\" target=\"_blank\" rel=\"nofollow\">http:\/\/stackoverflow.com\/questions\/3385003\/shell-script-to-get-difference-in-two-dates<\/a><\/li>\n<li><a class=\"external-link\" href=\"http:\/\/unix.stackexchange.com\/questions\/24626\/quickly-calculate-date-differences\" target=\"_blank\" rel=\"nofollow\">http:\/\/unix.stackexchange.com\/questions\/24626\/quickly-calculate-date-differences<\/a><\/li>\n<\/ul>\n<p>=END=<\/p>\n","protected":false},"excerpt":{"rendered":"<p>=Start= \u7f18\u7531\uff1a \u5728\u7a0b\u5e8f\u4e2d\u7528\u5230\u548c\u65e5\u671f\u76f8\u5173\u7684\u5faa\u73af\u65f6\uff0c\u53ef\u80fd\u4f1a\u9700\u8981\u63d0\u524d\u786e\u5b9a\u4e24\u4e2a\u65e5\u671f\u4e4b\u95f4\u7684\u5929\u6570\uff1b\u8fd8\u6709\u5c31\u662f\u5728\u65e5\u5e38\u7684 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,11,7,12],"tags":[698,30,65],"class_list":["post-3055","post","type-post","status-publish","format-standard","hentry","category-knowledgebase-2","category-linux","category-programing","category-tools","tag-date","tag-linux","tag-shell"],"views":5262,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/3055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=3055"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/3055\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=3055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=3055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=3055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}