dav*_*ers 384 python datetime datetime-format
我正在将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
Run Code Online (Sandbox Code Playgroud)
作为一个可能的答案,我将添加我发生的最佳选项,但可能会有一个更优雅的解决方案.
编辑:我应该提到我实际上并没有打印当前时间 - 我曾经datetime.now
提供过一个简单的例子.所以解决方案不应该假设datetime
它接收的任何实例都包含微秒组件.
Sve*_*ach 790
如果要格式化datetime
与标准格式不同的特定格式的对象,最好明确指定该格式:
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 18:21:26'
Run Code Online (Sandbox Code Playgroud)
有关指令的说明,请参阅文档datetime.strftime()
%
.
dav*_*ers 162
>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07
Run Code Online (Sandbox Code Playgroud)
小智 54
在Python 3.6中:
from datetime import datetime
datetime.datetime.now().isoformat(' ', 'seconds')
'2017-01-11 14:41:33'
Run Code Online (Sandbox Code Playgroud)
https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat
rad*_*tek 42
这就是我这样做的方式.ISO格式:
import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
# Returns: '2017-01-23T14:58:07'
Run Code Online (Sandbox Code Playgroud)
如果您不想要ISO格式,可以替换'T':
datetime.datetime.now().replace(microsecond=0).isoformat(' ')
# Returns: '2017-01-23 15:05:27'
Run Code Online (Sandbox Code Playgroud)
And*_*ark 17
还有一个选择:
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 11:31:28'
Run Code Online (Sandbox Code Playgroud)
默认情况下,这使用本地时间,如果您需要UTC,您可以使用以下内容:
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
'2011-11-03 18:32:20'
Run Code Online (Sandbox Code Playgroud)
Ste*_*ski 15
通过切片保留您想要的前19个字符:
>>> str(datetime.datetime.now())[:19]
'2011-11-03 14:37:50'
Run Code Online (Sandbox Code Playgroud)
An0*_*n0n 13
我通常这样做:
import datetime
now = datetime.datetime.now()
now = now.replace(microsecond=0) # To print now without microsecond.
# To print now:
print(now)
Run Code Online (Sandbox Code Playgroud)
输出:
2019-01-13 14:40:28
Run Code Online (Sandbox Code Playgroud)
由于并非所有datetime.datetime
实例都具有微秒组件(即,当它为零时),您可以将字符串分区为".".并只采取第一项,它将始终有效:
unicode(datetime.datetime.now()).partition('.')[0]
Run Code Online (Sandbox Code Playgroud)
对于Python 3.6及更高版本的,这样做的最好的办法是通过新timespec
的说法isoformat
。
isoformat(timespec='seconds', sep=' ')
Run Code Online (Sandbox Code Playgroud)
用法:
>>> datetime.now().isoformat(timespec='seconds')
'2020-10-16T18:38:21'
>>> datetime.now().isoformat(timespec='seconds', sep=' ')
'2020-10-16 18:38:35'
Run Code Online (Sandbox Code Playgroud)
f 字符串格式
>>> import datetime
>>> print(f'{datetime.datetime.now():%Y-%m-%d %H:%M:%S}')
2021-12-01 22:10:07
Run Code Online (Sandbox Code Playgroud)