仅在 Python 中将 datetime 对象转换为日期字符串

新手上路,请多包涵

我看到很多关于将日期字符串转换为 datetime Python 中的对象,但我想换一种方式。

我有

datetime.datetime(2012, 2, 23, 0, 0)

我想将其转换为 '2/23/2012' 之类的字符串。

原文由 wilbev 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 603
2 个回答

您可以使用 strftime 来帮助您格式化日期。

例如,

 import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')

将产生:

 '02/23/2012'

有关格式化的更多信息,请参见 此处

原文由 Levon 发布,翻译遵循 CC BY-SA 3.0 许可协议

datedatetime 对象(和 time 以及)支持一个 迷你语言来指定输出,它有两种访问方式

所以你的例子看起来像:

  • dt.strftime('The date is %b %d, %Y')
  • 'The date is {:%b %d, %Y}'.format(dt)
  • f'The date is {dt:%b %d, %Y}'

在所有三种情况下,输出都是:

日期是2012年2月23日

为了完整起见:你也可以直接访问对象的属性,但你只能得到数字:

 'The date is %s/%s/%s' % (dt.month, dt.day, dt.year)
# The date is 02/23/2012

学习迷你语言所花费的时间是值得的。


作为参考,以下是迷你语言中使用的代码:

  • %a 工作日作为语言环境的缩写名称。
  • %A 工作日作为语言环境的全名。
  • %w 十进制数形式的工作日,其中 0 是星期日,6 是星期六。
  • %d 以零填充的十进制数表示的月份中的第几天。
  • %b 月份作为语言环境的缩写名称。
  • %B 月份作为语言环境的全名。
  • %m 月份作为零填充的十进制数。 01, …, 12
  • %y 没有世纪的年份作为零填充的十进制数。 00, …, 99
  • %Y 以十进制数表示的年份。 1970, 1988, 2001, 2013
  • %H 小时(24 小时制)作为零填充的十进制数。 00, …, 23
  • %I 小时(12 小时制)作为零填充的十进制数。 01, …, 12
  • %p Locale 相当于 AM 或 PM。
  • %M 分钟作为零填充的十进制数。 00, …, 59
  • %S 第二个作为零填充的十进制数。 00, …, 59
  • %f 作为十进制数,在左侧补零。 000000, …, 999999
  • %z 格式为 +HHMM 或 -HHMM 的 UTC 偏移量(如果天真则为空)、+0000、-0400、+1030
  • %Z 时区名称(如果天真则为空)、UTC、EST、CST
  • %j 以零填充的十进制数字表示的一年中的第几天。 001, …, 366
  • %U 一年中的周数(星期日是第一个)作为零填充的十进制数。
  • %W 一年中的周数(星期一是第一个)作为十进制数。
  • %c Locale 的适当日期和时间表示。
  • %x Locale 的适当日期表示。
  • %X Locale 的适当时间表示。
  • %% 字面的“%”字符。

原文由 Ethan Furman 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题