我想知道是否有一种简单的方法可以做到这一点,因为 PyPI 是 Python 打包权威,似乎解析这些时间戳(也许进入纪元时间)应该在 Python 中稍微轻松地处理,但它让我无法理解去做这个。
例如,以下是上传不同版本 IPython 的时间戳:
https://pypi.python.org/packages/source/i/ipython/
有人可以向我解释如何用 Python 以合理的方式将这些时间戳解析到时代。
我想知道是否有一种简单的方法可以做到这一点,因为 PyPI 是 Python 打包权威,似乎解析这些时间戳(也许进入纪元时间)应该在 Python 中稍微轻松地处理,但它让我无法理解去做这个。
例如,以下是上传不同版本 IPython 的时间戳:
https://pypi.python.org/packages/source/i/ipython/
有人可以向我解释如何用 Python 以合理的方式将这些时间戳解析到时代。
不要尝试解析目录列表输出,而是使用 PyPI API。
有:
这使您可以解析访问该信息。例如,ipython 0.10.1 版的 JSON 链接为您提供 ISO8601 日期:
"urls": [
{
"has_sig": false,
"upload_time": "2010-10-12T08:40:01",
"comment_text": "",
"python_version": "source",
"url": "https://pypi.python.org/packages/source/i/ipython/ipython-0.10.1.tar.gz",
"md5_digest": "54ae47079b0e9a0998593a99ce76ec1f",
"downloads": 20100,
"filename": "ipython-0.10.1.tar.gz",
"packagetype": "sdist",
"size": 5837840
},
{
"has_sig": false,
"upload_time": "2010-10-12T08:40:38",
"comment_text": "",
"python_version": "source",
"url": "https://pypi.python.org/packages/source/i/ipython/ipython-0.10.1.zip",
"md5_digest": "f636c7ea03ff626a6ef9bd9a901de691",
"downloads": 29725,
"filename": "ipython-0.10.1.zip",
"packagetype": "sdist",
"size": 6419900
}
]
可以解析为datetime.datetime
对象:
>>> import datetime
>>> datestr = "2010-10-12T08:40:01"
>>> datetime.datetime.strptime(datestr, '%Y-%m-%dT%H:%M:%S')
datetime.datetime(2010, 10, 12, 8, 40, 1)
也就是说,您的示例清单中的日期格式可以解析为:
>>> datestr = "12-Oct-2010 06:40"
>>> datetime.datetime.strptime(datestr, '%m-%b-%Y %H:%M')
datetime.datetime(2010, 12, 1, 6, 40)
但是%b
占位符的行为取决于您的语言环境;只有当它设置为 C 或英语时,它才会在这里正常工作。
解析任意日期的最佳方法是使用python-dateutil
包(附加安装),因为它的解析器非常强大:
>>> from dateutil.parser import parse
>>> parse(datestr)
datetime.datetime(2010, 10, 12, 6, 40)
from dateutil import parser
parser.parse("13-Oct-2010 06:40")