Python datetime 到没有微秒组件的字符串

新手上路,请多包涵

我正在将 UTC 时间字符串添加到当前仅包含阿姆斯特丹 (!) 时间字符串的 Bitbucket API 响应中。为了与其他地方返回的 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 实例都将包含微秒组件。

原文由 davidchambers 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 436
2 个回答

如果您想以不同于标准格式的特定格式格式化 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")

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 4.0 许可协议

>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07

原文由 davidchambers 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题