Pythondate时间string没有微秒的组件
我将UTC时间string添加到当前仅包含阿姆斯特丹(!)时间string的Bitbucket API响应中。 为了与其他地方的UTC时间string保持一致,所需的格式是2011-11-03 11:07:04
(接着+00:00
,但这不是密切相关的)。
使用微秒组件创builddatetime
实例的这种string( 没有微秒组件)的最佳方法是什么?
>>> import datetime >>> print unicode(datetime.datetime.now()) 2011-11-03 11:13:39.278026
我会添加最好的选项,作为一个可能的答案,但可能会有一个更优雅的解决scheme。
编辑:我应该提到,我实际上并没有打印当前的时间 – 我用datetime.now
提供了一个快速的例子。 所以解决scheme不应该假定它接收到的任何datetime
实例将包含微秒的组件。
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") '2011-11-03 18:21:26'
>>> import datetime >>> now = datetime.datetime.now() >>> print unicode(now.replace(microsecond=0)) 2011-11-03 11:19:07
通过切片保留您想要的前19个字符:
>>> str(datetime.datetime.now())[:19] '2011-11-03 14:37:50'
又一个select:
>>> import time >>> time.strftime("%Y-%m-%d %H:%M:%S") '2011-11-03 11:31:28'
默认情况下,它使用本地时间,如果您需要UTC,则可以使用以下内容:
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) '2011-11-03 18:32:20'
这是我做的方式。 ISO格式:
import datetime datetime.datetime.now().replace(microsecond=0).isoformat() # Returns: '2017-01-23T14:58:07'
如果你不想要ISO格式,你可以replace'T':
datetime.datetime.now().replace(microsecond=0).isoformat(' ') # Returns: '2017-01-23 15:05:27'
在Python 3.6中:
>>> datetime.now().isoformat(' ', 'seconds') '2017-01-11 14:41:33'
https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat
由于不是所有的datetime.datetime
实例都有一个微秒的组件(即当它为零),你可以将string分割为“。” 并只采取第一项,这将始终工作:
unicode(datetime.datetime.now()).partition('.')[0]
从datetime导入date时间
now = datetime.now()。strftime(“%Y-%m-%d_%H:%M:%S.%f”)