Python datetime 转字符串,不包括微秒部分
我正在给Bitbucket的API响应添加UTC时间字符串,而目前这些响应只包含阿姆斯特丹的时间字符串。为了和其他地方返回的UTC时间字符串保持一致,我希望的格式是2011-11-03 11:07:04
(后面跟着+00:00
,但这不是重点)。
有什么好的方法可以从一个包含微秒的datetime
实例创建这样一个字符串(不带微秒部分)呢?
>>> import datetime
>>> print unicode(datetime.datetime.now())
2011-11-03 11:13:39.278026
我会把我想到的最佳选项作为一个可能的答案加上,但可能还有更优雅的解决方案。
编辑:我应该提到,我并不是真的在打印当前时间——我用datetime.now
只是为了提供一个快速的例子。所以解决方案不应该假设它接收到的任何datetime
实例都会包含微秒部分。
16 个回答
154
在Python 3.6中:
from datetime import datetime
datetime.now().isoformat(' ', 'seconds')
'2017-01-11 14:41:33'
https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat
219
>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
1102
如果你想把一个 datetime
对象按照特定的格式显示,而这个格式和标准格式不一样,最好是明确指定你想要的格式:
>>> import datetime
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 18:21:26'
你可以查看 关于 datetime.strftime()
的文档,里面有关于 %
指令的解释。
从 Python 3.6 开始,isoformat()
方法也变得很灵活,可以生成这种格式:
datetime.datetime.now().isoformat(sep=" ", timespec="seconds")