如何将Python datetime转换为可读格式的字符串?
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")