如何将Python datetime转换为可读格式的字符串?

226 投票
8 回答
438543 浏览
提问于 2025-04-15 18:36
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 个回答

88

在Python 3.6及以上版本中使用f-字符串

f-字符串是一种在Python中格式化字符串的新方法。它让你可以在字符串中直接插入变量的值,写起来简单明了。

使用f-字符串时,你只需要在字符串前加一个字母“f”或者“F”。然后在字符串中用大括号{}包裹你想插入的变量名。这样,Python会自动把变量的值放到字符串里。

比如说,如果你有一个变量叫做name,里面存着你的名字,你可以这样写:

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'
date_string
# returns '2024-01-15 23:58:18'

这行代码会生成一个包含你名字的字符串,非常方便。

f-字符串不仅可以插入变量,还可以在大括号里进行简单的运算,比如加法、乘法等。这让它更加灵活。

总之,f-字符串是个很实用的工具,特别适合需要频繁格式化字符串的场景。

LogTimeFormat = f'{datetime.utcnow():%Y%m%d_%H%M%S}'
LogTimeFormat
# returns time in UTC '20240116_055907'
127

这里是如何使用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

等等...

305

datetime类里面有一个叫做strftime的方法。Python的文档里详细说明了它可以接受的不同格式:strftime()和strptime()的用法

在这个具体的例子中,它的样子大概是这样的:

my_datetime.strftime("%B %d, %Y")

撰写回答