如何将python datetime转换为具有可读格式date的字符串?


171
t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003

如何将其转换为字符串?:

"January 28, 2010"

8
dt = datetime.datetime(*t[:7])

Answers:



112

这是您可以使用python的常规格式化功能来完成的操作...

>>>from datetime import datetime
>>>"{:%B %d, %Y}".format(datetime.now())

此处使用的格式字符与strftime所使用的格式字符相同。不要错过: 格式说明符的开头。

在大多数情况下,使用format()代替strftime()可以使代码更具可读性,易于编写,并且与格式化输出的生成方式保持一致...

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now())

将以上内容与以下strftime()替代项进行比较...

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y"))

此外,以下内容将无法工作...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    datetime.now().strftime("%s %B %d, %Y" % "Andre")
TypeError: not enough arguments for format string

等等...


1
我一直想知道在这种情况下,与strftime()相比,使用format()有什么好处。除了个人喜好以外,这两种方法都带来好处吗?性能上有什么区别?
2014年

2
@Andre谢谢您的提问!个人喜好通常由经验指导。请查看我更新后的答案,以了解为什么我比strftime()更喜欢format()。性能和Python是两个词,它们不能很好地结合在一起。如果我决定使用Python,我不会对性能过于关注。当我需要性能时,我会使用一些静态类型的高性能语言。
Autodidact

1
在大多数情况下,格式化方法更简单。比较:print 'Today is {:%B %d, %Y}'.format(datetime.now())print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y')。无论如何,当您使用format()方法时,为什么不也将其用于日期格式?
ChaimG

30

在Python 3.6及更高版本中使用f字符串。

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'

这将引发语法错误:“ SyntaxError:无效的语法”。您能详细说明一下吗?
sajid

好。我有Python 3.5.1。这就是为什么。感谢您的澄清。
sajid

21

我知道很老的问题。但是有了新的f字符串(从python 3.6开始),就有了新的选择。所以这里是为了完整性:

from datetime import datetime

dt = datetime.now()

# str.format
strg = '{:%B %d, %Y}'.format(dt)
print(strg)  # July 22, 2017

# datetime.strftime
strg = dt.strftime('%B %d, %Y')
print(strg)  # July 22, 2017

# f-strings in python >= 3.6
strg = f'{dt:%B %d, %Y}'
print(strg)  # July 22, 2017

strftime()and strptime()Behavior解释格式说明符的含义。



9

Python datetime对象具有method属性,该属性以可读格式打印。

>>> a = datetime.now()
>>> a.ctime()
'Mon May 21 18:35:18 2018'
>>> 

这是以可读格式获取DateTime的最佳,最简便和最快的方法之一。
Mujeeb Ishaque

-2

这是用于格式化的日期吗?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.