{ "info": { "author": "liuhao1024", "author_email": "edve@163.com", "bugtrack_url": null, "classifiers": [], "description": "================\nblack-hole\n================\n\n\n\u5b89\u88c5\n------------\n\n\u53ef\u4ee5::\n\n easy_install black-hole\n\n\u6216\u8005::\n\n pip install black-hole\n\n\n\u6982\u89c8\n--------\n\n**blackhole(\u9ed1\u6d1e)** \u662f\u4e00\u4e2a\u589e\u5f3a\u7684\u3001\u53cb\u597d\u7684\u65f6\u95f4\u5904\u7406\u5e93\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u89e3\u653e\u7a0b\u5e8f\u5458\u7684\u751f\u4ea7\u529b\u3002\n\u5728python\u4e2d\u6709\u592a\u591a\u5904\u7406\u65f6\u95f4\u7684\u5e93\uff0cdatetime/date/time/calendar\u7b49\u7b49\u3002\u9700\u8981\u8bb0\u7684\u7ec6\u8282\u592a\u591a\uff0c\u9009\u62e9\u56f0\u96be\u3002\n\u800cblackhole\u5c31\u662f\u89e3\u51b3\u8fd9\u4e2a\u7684\u9752\u9709\u7d20\u3002\u4ece\u5404\u79cd\u9ebb\u70e6\u7684\u8f6c\u6362\u4e2d\u89e3\u8131\u51fa\u6765\u3002\n\u53ea\u9700\u8bb0\u4f4f **Blackhole\u5bf9\u8c61** \u548c **ben()** \u3001 **tslice()** \u3001 **cronwalk()** \u8fd9\u51e0\u4e2a\u4e3b\u8981\u7684api\u5373\u53ef\u3002\n\n\n\u7528\u6cd5\n-----\n\u5728blackhole\u4e2d\uff0c\u6838\u5fc3\u5bf9\u8c61\u662f **Blackhole\u5bf9\u8c61** \u3002\n\n**ben()** \u51fd\u6570\u7528\u6765\u4fbf\u6377\u83b7\u53d6Blackhole\u5bf9\u8c61.::\n\n \u4e0d\u5e26\u53c2\u6570\u9ed8\u8ba4\u662f\u5f53\u524d\u65f6\u95f4\n >> ben()#shortcut of blackhole.now()\n \u53c2\u6570\u662f\u65f6\u95f4\u6233\n >> ben(timestamp)\n \u53c2\u6570\u662f\u65f6\u95f4\u5b57\u7b26\u4e32\n >> ben(timestr)\n \u53c2\u6570\u662fdatetime\u5bf9\u8c61\n >> ben(datetime)\n \u53c2\u6570\u662fBlackhole\u5bf9\u8c61\n >> ben(blackhole)\n \u663e\u5f0f\u6307\u660e\u683c\u5f0f\n >> ben('2013-01-01','%Y-%m-%d')\n datetime-like\u7684\u6784\u9020\u5668\n >> ben(year=2013,month=2,day=8,hour=7)\n\n\u4e5f\u5c31\u662f\u8bf4\uff0c\u53ea\u8981\u628a\u80fd\u8868\u8fbe\u65f6\u95f4\u7684\u4e1c\u897f\u585e\u7ed9ben()\u5c31\u884c\u4e86\u3002\n\u503c\u5f97\u4e00\u8bf4\u7684\u662fben(timestr)\u4e2d\u901a\u8fc7\u4e00\u4e2a\u8bcd\u6cd5\u89e3\u6790\u7684\u4e1c\u897f\uff0c\u4f7f\u5f97timestr\u53ef\u4ee5\u5f88\u7075\u6d3b\u3002\u5927\u4f53\u89c4\u5219\u662f\uff0c\u5982\u679c\u7f3a\u5c11\u5e74\u6708\u65e5\u4fe1\u606f\uff0c\u5219\u9ed8\u8ba4\u7528\u5f53\u524d\u65f6\u95f4\u7684\u5e74\u6708\u65e5\uff1b\u5982\u679c\u7f3a\u5c11\u65f6\u5206\u79d2\u4fe1\u606f\uff0c\u5219\u9ed8\u8ba4\u662f0::\n\n >> ben('2013,1,1') == ben('2013-01,01') == ben('2013 1 01') == ben('2013-01-01 00:00:00')\n True\n >> ben('2013,1,1 19:23') == ben('2013-01-01 19:23:00')\n True\n >> now = datetime.now()\n >> ben('19:23').year == now.year\n True\n >> ben('19:23').month == now.month\n True\n >> ben('19:23').day == now.day\n True\n >> ben('19:23').hour,ben('19:23').minute,ben('19:23').second\n (19,23,0)\n\n**Blackhole\u5bf9\u8c61** \uff0c\u901a\u8fc7\u8fd9\u4e2a\u5bf9\u8c61\uff0c\u53ef\u4ee5\u65b9\u4fbf\u7684\u83b7\u53d6\u5404\u4e2a\u65f6\u95f4\u5c5e\u6027\u548c\u64cd\u4f5c::\n\n >> bh = ben('2013,1,1 13:14:15')\n >> bh\n \n >> bh.year,bh.month,bh.day,bh.hour,bh.minute,bh.second,bh.microsecond\n (2013, 1, 1, 13, 14, 15, 0)\n >> bh.timestamp#\u8fd8\u80fd\u76f4\u63a5\u83b7\u53d6timestamp\n 1357017255.0\n\n #\u4fbf\u6377\u7684\u83b7\u53d6\u5e38\u7528\u7684sql\u683c\u5f0f\n >> bh.sql\n '2013-01-01 13:14:15'\n >> bh.sqldate\n '2013-01-01'\n >> bh.sqltime\n '13:14:15'\n\n #\u8fdb\u884c\u589e\u91cf\u53d8\u6362(shift\u662f\u539f\u5730\u64cd\u4f5c\uff0c\u800cshifted\u8fd4\u56de\u4e00\u4e2a\u65b0\u7684\u5bf9\u8c61)\n >> bh.shifted(day=1,minute=-2)\n \n >> bh.hour=23\n >> bh\n \n\n >> bh.floor('hour'),bh.ceil('hour')\n (, )\n >> bh.floor('year'),bh.ceil('year')\n (, )\n >> bh.round(30*60)\n \n >> bh.roundfloor(30*60)\n \n\n #\u91cd\u8f7d\u7b26\u53f7\n >> bh3 = blackhole(year=2013,month=2,day=27,hour=0)\n >> bh4 = blackhole(year=2013,month=3,day=1,hour=0)\n >> bh3==bh4\n False\n >> bh3> bh3>bh4\n False\n >> bh4-bh3\n datetime.timedelta(2)\n\n #mock\u5f53\u524d\u65f6\u95f4\uff0c\u8fd9\u6837\u5c31\u6d4b\u8bd5\u7684\u65f6\u5019\u5c31\u4e0d\u7528\u6539\u65f6\u95f4\uff0c\u76f4\u63a5mock\u7ed9\u5f53\u524d\u65f6\u95f4\u52a0\u4e0a\u4e2a\u504f\u79fb\u91cf\u5c31\u884c\u4e86\n #\u6bd4\u5982\u6211\u8981\u628a\u65f6\u95f4\u5f80\u540e\u63a8\u4e00\u5929\n >> ben()\n \n >> blackhole.mock(day=1)\n >> ben()\n \n >> ben()\n \n >> blackhole.unmock()\n >> ben()\n \n\n #\u5176\u5b83\n >> bh\n \n >> bh.raw()\n datetime.datetime(2013, 1, 1, 23, 14, 15)\n >> bh.clone()\n \n >> bh.replace(day=2)\n >> bh\n \n >> bh.days_in_month\n 31\n >> bh.is_today()\n False\n >> bh.is_past_date()\n True\n >> bh.is_future_date()\n False\n >> bh.strftime('%Y/%m/%d')\n '2013/01/02'\n >> blackhole.strptime('20130203','%Y%m%d')\n \n\n**tslice** ,\u53d7\u5185\u7f6e\u51fd\u6570xrange\u542f\u53d1\uff0c\u7528\u4e8e\u83b7\u53d6\u4e00\u4e2a\u65f6\u95f4\u5e8f\u5217\u3002\n\n\u683c\u5f0f\u662f::\n\n tslice(unit,start=None,end=None,step=1,count=None) -> generator of blackhole object\n unit in ['year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond']\n\n\u8ddfxrange\u4e00\u6837\uff0cstep\u53ef\u4ee5\u662f\u8d1f\u6570\u3002\u5982\u679cstart\u4e3a\u7a7a\uff0c\u5219\u9ed8\u8ba4\u662f\u5f53\u524d\u65f6\u95f4\u3002\n\n\u793a\u4f8b::\n\n >> list(tslice('day','2013-01-01','2013-01-04'))\n [,\n ,\n ]\n\n >> list(tslice('day','2013-01-04','2013-01-01',step=-1))\n [,\n ,\n ]\n\n >> list(tslice('day','2013-01-04','2013-01-31',step=3,count=2))\n [,\n ]\n\n >> list(tslice('year',start='2013-01-04',count=2))\n [,\n ]\n\n >> list(tslice('minute',start='2013-01-04',count=2))\n [,\n ]\n\n\n**cronwalk** ,\u7528\u4e8e\u5bf9crontab\u8868\u8fbe\u5f0f\u8fdb\u884c\u6f14\u7b97\uff0c\u5f97\u5230\u4e0b\u4e00\u4e2a\u6267\u884c\u7684\u65f6\u95f4\u3002\n\n\u683c\u5f0f::\n\n cronwalk(expr,base=None)# \u5982\u679cbase\u4e3a\u7a7a\uff0c\u9ed8\u8ba4\u662f\u5f53\u524d\u65f6\u95f4\u3002\n\n\u793a\u4f8b::\n\n >> c = iter(cronwalk('0 6 * * *',base='2013-02-03'))\n >> next(c)\n \n >> next(c)\n \n\n >> c = iter(cronwalk('0 23-7/2 * * *',base='2013-02-03 08:30:00'))\n >> next(c)\n \n >> next(c)\n \n\n**timediff** ,\u7528\u4e8e\u8ba1\u7b97\u8ddd\u79bb\u4e0b\u4e2a\u6307\u5b9a\u65f6\u95f4\u8fd8\u6709\u591a\u4e45\uff0c\u6bd4\u5982\u6709\u4e2a\u6d3b\u52a8\u662f\u6bcf\u592920:00:00\u5f00\u59cb\u7684\uff0c\u8981\u8ba1\u7b97\u8ddd\u79bb\u6d3b\u52a8\u5f00\u59cb\u8fd8\u6709\u591a\u4e45::\n\n >> timediff('20:00:00',factor=86400,base='19:30:00')\n 1800\n >> timediff('20:00:00',factor=86400,base='21:30:00')\n 81000\n\n\nChangelog\n---------\n**0.0.3**\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/liuhao1024/black-hole", "keywords": "datetime,calendar,time", "license": "MIT License", "maintainer": null, "maintainer_email": null, "name": "black-hole", "package_url": "https://pypi.org/project/black-hole/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/black-hole/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/liuhao1024/black-hole" }, "release_url": "https://pypi.org/project/black-hole/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "\u4e00\u4e2a\u589e\u5f3a\u65f6\u95f4\u7ba1\u7406\u5e93", "version": "0.0.3" }, "last_serial": 2553235, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "563d62d7079ab1a45f728e24cd07e5a9", "sha256": "7968ecb321c48d319619669f5cdf956a1d0451b0878bfc733e197e517666a7b1" }, "downloads": -1, "filename": "black-hole-0.0.1.tar.gz", "has_sig": false, "md5_digest": "563d62d7079ab1a45f728e24cd07e5a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16110, "upload_time": "2016-12-30T03:13:09", "url": "https://files.pythonhosted.org/packages/b9/10/616a01bd5fd883c711a65d84a890727a482afabf620a0ee9ac8609659429/black-hole-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "633e12b56ce193681ca98a4ca6a7d804", "sha256": "9af0401800c63d7e570c81c8d1e02ec39a136b0100b7896df1736e17d336d6b4" }, "downloads": -1, "filename": "black-hole-0.0.2.tar.gz", "has_sig": false, "md5_digest": "633e12b56ce193681ca98a4ca6a7d804", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16104, "upload_time": "2016-12-30T04:08:44", "url": "https://files.pythonhosted.org/packages/a3/8d/11c24a1e2a438c5bf7bba30eeaab770de7f7b6f40385a938ec73b15fe7f8/black-hole-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "92ef2be4dadeb137b265b9bbc65df43a", "sha256": "33e50754daae24f7f463ee3439cababb3e715f11e9ee2127ccad10a8de0bfbf9" }, "downloads": -1, "filename": "black-hole-0.0.3.tar.gz", "has_sig": false, "md5_digest": "92ef2be4dadeb137b265b9bbc65df43a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15798, "upload_time": "2017-01-04T08:55:46", "url": "https://files.pythonhosted.org/packages/e9/07/440a35b9fc51fc1c3dd083e1ebac4006da330838a89a6df4c2d8f4a29fbd/black-hole-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "92ef2be4dadeb137b265b9bbc65df43a", "sha256": "33e50754daae24f7f463ee3439cababb3e715f11e9ee2127ccad10a8de0bfbf9" }, "downloads": -1, "filename": "black-hole-0.0.3.tar.gz", "has_sig": false, "md5_digest": "92ef2be4dadeb137b265b9bbc65df43a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15798, "upload_time": "2017-01-04T08:55:46", "url": "https://files.pythonhosted.org/packages/e9/07/440a35b9fc51fc1c3dd083e1ebac4006da330838a89a6df4c2d8f4a29fbd/black-hole-0.0.3.tar.gz" } ] }