{"id":1933,"date":"2023-11-21T17:08:16","date_gmt":"2023-11-21T09:08:16","guid":{"rendered":"http:\/\/zhang.mba\/?p=1933"},"modified":"2023-11-21T17:22:39","modified_gmt":"2023-11-21T09:22:39","slug":"pendulum-yong-yu-chu-li-ri-qi-shi-jian-ri-qi","status":"publish","type":"post","link":"https:\/\/zhang.mba\/index.php\/2023\/11\/21\/17\/08\/16\/1933\/pendulum-yong-yu-chu-li-ri-qi-shi-jian-ri-qi\/python\/zhangzhiqi\/","title":{"rendered":"Pendulum\uff0c\u7528\u4e8e\u5904\u7406\u65e5\u671f\u3001\u65f6\u95f4\u3001\u65e5\u671f"},"content":{"rendered":"<p><strong>Pendulum<\/strong>\u3002<\/p>\n<p><strong><a href=\"https:\/\/github.com\/sdispater\/pendulum\">https:\/\/github.com\/sdispater\/pendulum<\/a><\/strong><\/p>\n<p>Pendulum \u662f\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684\u5e93\uff0c<strong>\u7528\u4e8e\u5904\u7406\u65e5\u671f\u3001\u65f6\u95f4\u548c\u65f6\u533a<\/strong>\u3002<\/p>\n<p>\u5b83\u63d0\u4f9b\u4e86\u76f4\u89c2\u4e14\u5bcc\u6709\u8868\u73b0\u529b\u7684 API\uff0c\u7528\u4e8e\u64cd\u4f5c\u3001\u683c\u5f0f\u5316\u548c\u8ba1\u7b97\u65e5\u671f\u548c\u65f6\u95f4\u4e4b\u95f4\u7684\u5dee\u5f02\u3002<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInCTLksR7PrjbVMg6ssEU5hAscjmh4ibnkoI08AHSD6Hiaw2daDaJ28Tww\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInCTLksR7PrjbVMg6ssEU5hAscjmh4ibnkoI08AHSD6Hiaw2daDaJ28Tww\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u56fe\u7247\" \/><\/div><\/p>\n<h3><a id=\"%E4%B8%BA%E4%BB%80%E4%B9%88pendulum%E5%A6%82%E6%AD%A4%E5%8F%97%E6%AC%A2%E8%BF%8E%EF%BC%9F\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u4e3a\u4ec0\u4e48 Pendulum \u5982\u6b64\u53d7\u6b22\u8fce\uff1f<\/h3>\n<ul>\n<li>\n<p><strong>\u76f4\u89c2\u7684 API<\/strong>\uff1aPendulum \u63d0\u4f9b\u4e86\u76f4\u89c2\u4e14\u7528\u6237\u53cb\u597d\u7684 API\uff0c\u901a\u5e38\u88ab\u8ba4\u4e3a\u6bd4\u5185\u7f6e\u7684\u65e5\u671f\u65f6\u95f4\u6a21\u5757\u66f4\u65b9\u4fbf\u4e14\u66f4\u5177\u8868\u73b0\u529b\u3002\u5b83\u63d0\u4f9b\u4e86\u591a\u79cd\u65b9\u6cd5\u548c\u5c5e\u6027\u6765\u64cd\u4f5c\u3001\u683c\u5f0f\u5316\u548c\u8ba1\u7b97\u65e5\u671f\u548c\u65f6\u95f4\u4e4b\u95f4\u7684\u5dee\u5f02\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u65f6\u533a\u652f\u6301<\/strong>\uff1a\u6b63\u786e\u5904\u7406\u65f6\u533a\u53ef\u80fd\u5177\u6709\u6311\u6218\u6027\uff0c\u4f46 Pendulum \u7b80\u5316\u4e86\u8fd9\u9879\u4efb\u52a1\u3002\u5b83\u5185\u7f6e\u4e86\u5bf9\u65f6\u533a\u7684\u652f\u6301\uff0c\u5305\u62ec\u81ea\u52a8\u5904\u7406\u590f\u4ee4\u65f6\u8f6c\u6362\u548c\u4e0d\u540c\u65f6\u533a\u4e4b\u95f4\u7684\u8f6c\u6362\u3002Pendulum \u4f7f\u7528 IANA \u65f6\u533a\u6570\u636e\u5e93\uff0c\u8be5\u6570\u636e\u5e93\u63d0\u4f9b\u5168\u9762\u4e14\u6700\u65b0\u7684\u65f6\u533a\u4fe1\u606f\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4e30\u5bcc\u7684\u529f\u80fd<\/strong>\uff1aPendulum \u63d0\u4f9b\u4e86\u4e00\u7ec4\u4e30\u5bcc\u7684\u529f\u80fd\uff0c\u8d85\u51fa\u4e86\u6807\u51c6\u65e5\u671f\u65f6\u95f4\u6a21\u5757\u63d0\u4f9b\u7684\u529f\u80fd\u3002\u5b83\u5305\u62ec\u65e5\u671f\u548c\u65f6\u95f4\u7b97\u672f\u3001\u76f8\u5bf9\u65f6\u95f4\u8868\u793a\u3001\u6301\u7eed\u65f6\u95f4\u8ba1\u7b97\u3001\u5b57\u7b26\u4e32\u65e5\u671f\u89e3\u6790\u7b49\u65b9\u6cd5\u3002\u6b64\u529f\u80fd\u96c6\u4f7f\u4f60\u53ef\u4ee5\u66f4\u8f7b\u677e\u5730\u5728\u5404\u79cd\u573a\u666f\u4e2d\u5904\u7406\u65e5\u671f\u3001\u65f6\u95f4\u548c\u65f6\u533a\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4eba\u7c7b\u53ef\u8bfb\u7684\u8f93\u51fa<\/strong>\uff1aPendulum \u5141\u8bb8\u4f60\u4ee5\u4eba\u7c7b\u53ef\u8bfb\u7684\u65b9\u5f0f\u683c\u5f0f\u5316\u65e5\u671f\u548c\u65f6\u95f4\u3002<\/p>\n<\/li>\n<li>\n<p><strong>\u4e0e\u73b0\u6709\u4ee3\u7801\u7684\u517c\u5bb9\u6027<\/strong>\uff1aPendulum \u88ab\u8bbe\u8ba1\u4e3a datetime \u6a21\u5757\u7684\u76f4\u63a5\u66ff\u4ee3\u54c1\u3002\u5b83\u63d0\u4f9b\u4e86\u7c7b\u4f3c\u7684\u754c\u9762\uff0c\u8fd9\u610f\u5473\u7740\u4f60\u53ef\u4ee5\u8f7b\u677e\u5730\u4ece\u4f7f\u7528 datetime \u5207\u6362\u5230\u4f7f\u7528 Pendulum\uff0c\u800c\u65e0\u9700\u8fdb\u884c\u5927\u91cf\u4ee3\u7801\u4fee\u6539\u3002\u8fd9\u79cd\u517c\u5bb9\u6027\u4f7f\u5176\u5bf9\u90a3\u4e9b\u60f3\u8981\u589e\u5f3a\u73b0\u6709\u4ee3\u7801\u5e93\u800c\u65e0\u9700\u8fdb\u884c\u91cd\u5927\u91cd\u6784\u7684\u5f00\u53d1\u4eba\u5458\u5f88\u6709\u5438\u5f15\u529b\u3002<\/p>\n<\/li>\n<\/ul>\n<h3><a id=\"%E5%88%9D%E4%BD%93%E9%AA%8C\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u521d\u4f53\u9a8c<\/h3>\n<h4><a id=\"%E5%BA%93%E7%9A%84%E5%AE%89%E8%A3%85\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u5e93\u7684\u5b89\u88c5<\/h4>\n<p>\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8fd0\u884c\u4ee5\u4e0b\u547d\u4ee4\u5b89\u88c5\u5b83\u3002\u76ee\u524d\u652f\u6301 Python 3.8 \u53ca\u66f4\u9ad8\u7248\u672c\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pip\u00a0install\u00a0pendulum\n<\/code><\/pre>\n<h4><a id=\"%E6%97%B6%E5%8C%BA\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u65f6\u533a<\/h4>\n<p>Pendulum \u5e93\u6700\u4ee4\u4eba\u5370\u8c61\u6df1\u523b\u7684\u529f\u80fd\u662f\u65f6\u533a\u3002<\/p>\n<p>\u8fd9\u4e5f\u662f\u5185\u7f6e datetime \u6a21\u5757\u7684\u5173\u952e\u95ee\u9898\u4e4b\u4e00\u3002\u5728 Python 3.9 \u4e4b\u524d\uff0c\u5982\u679c\u6211\u4eec\u60f3\u4f7f\u7528 IANA \u65f6\u533a\uff0c\u5c31\u5fc5\u987b\u6d89\u53ca pytz \u3002<\/p>\n<p>\u4f7f\u7528 Pendulum \u5e93\uff0c\u6211\u4eec\u53ef\u4ee5<strong>\u8f7b\u677e\u521b\u5efa\u5e26\u6709\u65f6\u533a\u7684\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u3002<\/strong><\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">import pendulum as pdl\ndt_shanghai = pdl.datetime(2023, 9, 20, tz='Asia\/Shanghai')\ndt_america = pdl.datetime(2023, 9, 20, tz='America\/Indiana\/Indianapolis')\nprint(dt_shanghai)\nprint(dt_america)\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzIn6CFnia0qJckH5libWuZx394SmADEYyKz29FCHECTrTOzpbPUGDoKPrwQ\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzIn6CFnia0qJckH5libWuZx394SmADEYyKz29FCHECTrTOzpbPUGDoKPrwQ\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u56fe\u7247\" \/><\/div><\/p>\n<p>\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u540c\u65f6\u521b\u5efa\u4e86\u4e24\u4e2a\u5bf9\u8c61\u3002\u4f46\u662f\uff0c\u65f6\u533a\u4e0d\u540c\u3002Pendulum \u8fd8\u53ef\u4ee5\u8ba9\u6211\u4eec\u8f7b\u677e\u6bd4\u8f83\u65f6\u95f4\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt_shanghai.diff(dt_america).in_hours()\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInGLUW3ia1SXLef54MQOsHsSvqrLTseicBsTdHiarLQK2QuuibJgia6XDQY6g\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInGLUW3ia1SXLef54MQOsHsSvqrLTseicBsTdHiarLQK2QuuibJgia6XDQY6g\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u56fe\u7247\" \/><\/div><\/p>\n<p>\u8fd9\u662f\u591a\u4e48\u5bb9\u6613\u554a\uff01\u6bd4\u8f83\u4e24\u4e2a\u5177\u6709\u4e0d\u540c\u65f6\u533a\u7684\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u5e76\u83b7\u5f97\u51c6\u786e\u7684\u7ed3\u679c\uff01<\/p>\n<h4><a id=\"%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4%E8%A7%A3%E6%9E%90\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u65e5\u671f\u65f6\u95f4\u89e3\u6790<\/h4>\n<p>\u89e3\u6790\u65e5\u671f\u65f6\u95f4\u53ef\u80fd\u662f\u7f16\u7a0b\u4e2d\u6700\u5e38\u89c1\u7684\u7528\u4f8b\u3002<\/p>\n<p>Python \u7684 datetime \u6a21\u5757\u5728\u8fd9\u65b9\u9762\u505a\u5f97\u5f88\u597d\u3002\u7136\u800c\uff0c\u4e0e\u5927\u591a\u6570\u5176\u4ed6\u7f16\u7a0b\u8bed\u8a00\u76f8\u6bd4\uff0c<strong>Python \u4f7f\u7528\u4e0d\u540c\u7684\u683c\u5f0f &quot;%Y%m%d&quot;<\/strong>\u3002<\/p>\n<p>Pendulum \u5141\u8bb8\u6211\u4eec\u4f7f\u7528\u5982\u4e0b\u901a\u7528\u683c\u5f0f\u4ee3\u7801\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.from_format('2023-09-20\u00a010:00:00',\u00a0'YYYY-MM-DD\u00a0HH:mm:ss')\n<\/code><\/pre>\n<p>Pendulum \u8fd8\u652f\u6301\u66f4\u591a\u52a8\u6001\u683c\u5f0f\u3002\u4f8b\u5982\uff0c\u4ec5\u5305\u542b\u6570\u5b57\u7684\u65e5\u671f\u65f6\u95f4\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.parse('20211106')\n<\/code><\/pre>\n<p>\u8fd8\u53ef\u4ee5\u6307\u5b9a\u5e74\u4efd\u3001\u5468\u6570\u548c\u8be5\u5468\u7684\u65e5\u671f\uff0cPendulum \u4f1a\u7ed9\u4f60\u6b63\u786e\u7684\u65e5\u671f\u65f6\u95f4\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.parse('2021-W44-6')\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInt4nR1RHhIRdeYkuKdHZWRgj6WTpRovmlTJot4L8e04STVxtWLMyucA\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInt4nR1RHhIRdeYkuKdHZWRgj6WTpRovmlTJot4L8e04STVxtWLMyucA\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u56fe\u7247\" \/><\/div><\/p>\n<h4><a id=\"%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A0%BC%E5%BC%8F%E5%8C%96\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u5b57\u7b26\u4e32\u683c\u5f0f\u5316<\/h4>\n<p>\u5c06\u5b57\u7b26\u4e32\u89e3\u6790\u4e3a\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u540e\uff0c\u4e0b\u4e00\u4e2a\u91cd\u8981\u7684\u4e8b\u60c5\u662f<strong>\u5c06\u65e5\u671f\u65f6\u95f4\u8f93\u51fa\u4e3a\u5177\u4f53\u683c\u5f0f\u7684\u5b57\u7b26\u4e32<\/strong>\u3002<\/p>\n<p>\u9996\u5148\uff0c\u6211\u4eec\u6709\u4e00\u4e2a\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u3002\u7531\u4e8e Pendulum \u7ee7\u627f\u4e86Python datetime\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 now() \u7b49\u6240\u6709\u65b9\u6cd5\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt\u00a0=\u00a0pdl.now()\n<\/code><\/pre>\n<p>\u7136\u540e\uff0c\u8ba9\u6211\u4ece Pendulum \u4e2d\u9009\u53d6\u51e0\u4e2a\u8f6c\u5b57\u7b26\u4e32\u65b9\u6cd5\u7684\u793a\u4f8b\uff0c\u770b\u770b\u4f7f\u7528\u5f00\u7bb1\u5373\u7528\u7684\u683c\u5f0f\u8f93\u51fa\u65e5\u671f\u65f6\u95f4\u662f\u591a\u4e48\u5bb9\u6613\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt.to_date_string() # \u4ec5\u5305\u542b\u65e5\u671f\ndt.to_time_string() # \u4ec5\u5305\u542b\u65f6\u95f4\ndt.to_formatted_date_string() # \u6708\u4efd\u7f29\u5199\u65e5\u671f\u3001\u5e74\u4efd\ndt.to_day_datetime_string() # \u65e5\u3001\u6708\u4efd\u7f29\u5199\u65e5\u671f\u3001\u5e74\u4efd hh:mm am\/pm \ndt.to_iso8601_string() # \u7b26\u5408 ISO 9601 \u6807\u51c6\ndt.to_atom_string() # \u7b26\u5408 Atom \u683c\u5f0f\ndt.to_cookie_string() # \u7b26\u5408 cookie \u98ce\u683c\u683c\u5f0f\n<\/code><\/pre>\n<p>\u5f53\u7136\uff0c<strong>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u683c\u5f0f\u4ee3\u7801\u6765\u81ea\u5b9a\u4e49\u8f93\u51fa\u5b57\u7b26\u4e32<\/strong>\uff0c\u800c\u4e14\u683c\u5f0f\u4ee3\u7801\u66f4\u52a0\u76f4\u89c2\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt.format('DD\u00a0MMMM,\u00a0YYYY\u00a0dddd\u00a0HH:mm:ss\u00a0A')\n<\/code><\/pre>\n<p>\u53e6\u4e00\u4e2a\u5f88\u9177\u7684\u4e1c\u897f\u662f\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5730<strong>\u5c06\u4e00\u4e9b\u4e0d\u76f8\u5173\u7684\u5b57\u7b26\u4e32\u6dfb\u52a0\u5230\u683c\u5f0f\u5b57\u7b26\u4e32\u4e2d<\/strong>\u5e76\u8ba9\u5b83\u4eec\u4ece\u683c\u5f0f\u4e2d\u8f6c\u4e49\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt.format('[Hi!\u00a0Today\u00a0is]\u00a0DD\u00a0MMMM,\u00a0YYYY\u00a0dddd\u00a0HH:mm:ss\u00a0A')\n<\/code><\/pre>\n<h4><a id=\"%E5%8F%8B%E5%A5%BD%E7%9A%84%E5%8F%AF%E8%AF%BB%E6%80%A7\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u53cb\u597d\u7684\u53ef\u8bfb\u6027<\/h4>\n<p>\u5728\u5185\u7f6e\u7684 Python datetime \u6a21\u5757\u4e2d\uff0ctimedelta \u5de5\u5177\u53ef\u4ee5\u5f88\u597d\u5730\u5b8c\u6210\u6bd4\u8f83\u5de5\u4f5c\u3002<\/p>\n<p>\u7136\u800c\uff0cPendulum \u751a\u81f3\u53ef\u4ee5\u901a\u8fc7\u5728<strong>\u6bd4\u8f83\u4e24\u4e2a\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u65f6\u63d0\u4f9b\u4e00\u4e9b\u66f4\u4eba\u6027\u5316\u7684\u8f93\u51fa\u6765\u6539\u8fdb\u5b83<\/strong>\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u65b9\u6cd5 diff_for_humans() \u4f1a\u5c06\u65e5\u671f\u65f6\u95f4\u5bf9\u8c61\u4e0e\u5f53\u524d\u65f6\u95f4\u8fdb\u884c\u6bd4\u8f83\uff0c\u5e76\u8fd4\u56de\u975e\u5e38<strong>\u4eba\u6027\u5316\u7684\u8f93\u51fa<\/strong>\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">dt1 = pdl.datetime(2021, 1, 1) \ndt2 = pdl.datetime(2021, 11, 7, 1) \ndt2.diff_for_humans(dt1)\n<\/code><\/pre>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInktZicJ9V1Ufq0YXDVsJiaU8wbxDVMYicsx2ukNV9x9rTaF1e0E5a8icqug\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1'><img class=\"lazyload lazyload-style-2\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  data-original=\"https:\/\/mmbiz.qpic.cn\/sz_mmbiz_png\/b9ZEA5r2AY7WobwfX3Su87WJo9qeOzInktZicJ9V1Ufq0YXDVsJiaU8wbxDVMYicsx2ukNV9x9rTaF1e0E5a8icqug\/640?wx_fmt=png&amp;wxfrom=5&amp;wx_lazy=1&amp;wx_co=1\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\u56fe\u7247\" \/><\/div><\/p>\n<h4><a id=\"%E6%9F%A5%E6%89%BE%E7%9B%B8%E5%AF%B9%E6%97%A5%E6%9C%9F%E6%97%B6%E9%97%B4\" class=\"anchor\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"><\/span><\/a>\u67e5\u627e\u76f8\u5bf9\u65e5\u671f\u65f6\u95f4<\/h4>\n<p>\u5185\u7f6e Python \u65e5\u671f\u65f6\u95f4\u53ef\u4ee5\u6539\u8fdb\u7684\u65b9\u9762\u4e4b\u4e00\u662f<strong>\u6839\u636e\u7ed9\u5b9a\u7684\u65e5\u671f\u65f6\u95f4\u67e5\u627e\u76f8\u5bf9\u65e5\u671f\u65f6\u95f4<\/strong>\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u5f53\u6211\u4eec\u60f3\u8981<strong>\u67e5\u627e\u5f53\u524d\u6708\u4efd\u7684\u6700\u540e\u4e00\u5929\u65f6<\/strong>\uff0c\u6211\u4eec\u5fc5\u987b\u4f7f\u7528 datetutil \u6a21\u5757\u4e2d\u7684 relativedelta\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">from dateutil.relativedelta import relativedelta\nimport datetime\ndatetime.datetime(2013, 2, 21) + relativedelta(day=31)\n<\/code><\/pre>\n<p>\u53e6\u5916\uff0c\u4ee3\u7801\u7684\u53ef\u8bfb\u6027\u4e0d\u592a\u597d\uff0c\u56e0\u4e3a\u6211\u4eec\u4f7f\u7528 day=31 \u4f5c\u4e3a\u53c2\u6570\uff0c\u5c3d\u7ba1\u5f53\u6708\u4efd\u5c11\u4e8e 31 \u5929\u65f6\u5b83\u4f1a\u8d77\u4f5c\u7528\u3002<\/p>\n<p>\u5728 Pendulum \u4e2d\uff0c\u8fd9\u518d\u7b80\u5355\u4e0d\u8fc7\u4e86\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.now().start_of('day') \npdl.now().start_of('month')\npdl.now().end_of('day')\npdl.now().end_of('month')\n<\/code><\/pre>\n<p>\u5185\u7f6e\u65e5\u671f\u65f6\u95f4\u6a21\u5757\u7684\u53e6\u4e00\u4e2a\u4e0d\u4fbf\u4e4b\u5904\u662f<strong>\u67e5\u627e\u4e00\u5468\u4e2d\u7684\u67d0\u4e00\u5929<\/strong>\u3002<\/p>\n<p>\u4f8b\u5982\uff0c\u5982\u679c\u6211\u4eec\u60f3\u67e5\u627e\u4e0b\u5468\u4e00\u7684\u65e5\u671f\uff0c\u8fd9\u53ef\u80fd\u662f\u6700\u7b80\u5355\u7684\u65b9\u6cd5\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">from datetime import datetime, timedelta\ndatetime.now() + timedelta(days=(0-datetime.now().weekday()+7)%7)\n\n<\/code><\/pre>\n<p>\u5b83\u53ef\u4ee5\u5b8c\u6210\u5de5\u4f5c\uff0c\u4f46\u53ef\u8bfb\u6027\u5f88\u5dee\u3002\u5f00\u53d1\u4eba\u5458\u9700\u8981\u82b1\u4e00\u4e9b\u65f6\u95f4\u6765\u7406\u89e3\u8fd9\u884c\u4ee3\u7801\u7684\u903b\u8f91\u662f\u4ec0\u4e48\u3002<\/p>\n<p>\u6709\u4e86 Pendulum\uff0c\u4e00\u5207\u5c31\u8fd9\u4e48\u7b80\u5355\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.now().next(pdl.MONDAY)\n<\/code><\/pre>\n<p>\u6211\u4eec\u751a\u81f3\u4e0d\u7528\u8003\u8651\u5e94\u8be5\u7528 0 \u8fd8\u662f 1 \u6765\u8868\u793a\u661f\u671f\u4e00\uff0c\u56e0\u4e3a Pendulum \u4f7f\u7528\u679a\u4e3e\u6765\u8868\u793a\u661f\u671f\u4e00\u3002<\/p>\n<p>\u7c7b\u4f3c\u5730\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528 previous() \u65b9\u6cd5\u6765\u67e5\u627e\u524d\u4e00\u4e2a\u661f\u671f\u4e8c\uff0c\u5982\u4e0b\u6240\u793a\u3002\u53e6\u5916\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u8bbe\u7f6e\u53c2\u6570 keep_time=True \u6765\u4fdd\u7559\u65f6\u95f4\u90e8\u5206\u3002<\/p>\n<pre class=\"line-numbers\"><code class=\"language-python\">pdl.now().previous(pdl.TUESDAY) \npdl.now().previous(pdl.TUESDAY, keep_time=True)\n<\/code><\/pre>\n<p>Pendulum \u662f Python datetime \u6a21\u5757\u7684\u76f4\u63a5\u66ff\u4ee3\u54c1\u3002\u901a\u8fc7\u4f7f\u7528\u8fd9\u4e2a\u5e93\uff0cdatetime \u6a21\u5757\u53ef\u4ee5\u89e3\u51b3\u7684\u8bb8\u591a\u95ee\u9898\uff0c\u4f8b\u5982\u67e5\u627e\u76f8\u5bf9\u65e5\u671f\uff0c\u73b0\u5728\u53ef\u4ee5\u8f7b\u677e\u89e3\u51b3\u3002\u66f4\u91cd\u8981\u7684\u662f\uff0cPendulum \u63d0\u4f9b\u4e86\u6574\u6d01\u5e72\u51c0\u7684 API \u6765\u63d0\u9ad8\u6211\u4eec\u4ee3\u7801\u7684\u53ef\u8bfb\u6027\uff0c\u5e76\u4e14\u8fd9\u4e9b\u89e3\u51b3\u65b9\u6848\u66f4\u52a0\u76f4\u89c2\u3002<\/p>\n<p>\u6765\u6e90&#8212;&#8211;\u5c0f\u5bd2\u804apython<\/p>\n<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Pendulum\u3002 https:\/\/github.com\/sdispater\/pendulum Pendulum \u662f\u4e00\u4e2a\u529f\u80fd\u5f3a\u5927\u7684\u5e93\uff0c\u7528\u4e8e\u5904\u7406\u65e5\u671f\u3001\u65f6\u95f4\u548c\u65f6\u533a\u3002 \u5b83\u63d0\u4f9b\u4e86\u76f4\u89c2\u4e14\u5bcc\u6709\u8868\u73b0\u529b\u7684 API\uff0c\u7528\u4e8e\u64cd\u4f5c\u3001\u683c\u5f0f\u5316\u548c\u8ba1\u7b97\u65e5\u671f\u548c\u65f6\u95f4\u4e4b\u95f4\u7684\u5dee\u5f02\u3002 \u4e3a\u4ec0\u4e48 Pendulum \u5982\u6b64\u53d7\u6b22\u8fce\uff1f \u76f4\u89c2\u7684 API\uff1aPendulum &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0},"categories":[12],"tags":[54],"_links":{"self":[{"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/posts\/1933"}],"collection":[{"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/comments?post=1933"}],"version-history":[{"count":0,"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/posts\/1933\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/media?parent=1933"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/categories?post=1933"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhang.mba\/index.php\/wp-json\/wp\/v2\/tags?post=1933"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}