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”)