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

wil*_*bev 263 python datetime

我在Python 中将datetime字符串转换为'2/23/2012'对象时看到了很多,但我想转向其他方式.
我有datetime,我想把它转换成字符串'2/23/2012'.

Lev*_*von 450

您可以使用strftime来帮助您设置日期格式.

例如,

import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

会产生:

'02/23/2012'
Run Code Online (Sandbox Code Playgroud)

有关格式的更多信息,请点击这里

  • 对于django中的`DateTimeField`或`DateField`非常有用.谢谢 (6认同)
  • 使用`t = datetime.datetime.now()`来使用当前日期 (3认同)

Eth*_*man 172

datedatetime对象(以及time同样)支持使用迷你语言来指定输出,有两种方法可以访问它:

  • 直接方法调用:dt.strftime('format here'); 和
  • 新格式方法: '{:format here}'.format(dt)

所以你的例子看起来像:

dt.strftime('%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

要么

'{:%m/%d/%Y}'.format(dt)
Run Code Online (Sandbox Code Playgroud)

为了完整起见:您还可以直接访问对象的属性,但之后您只能获取数字:

'%s/%s/%s' % (dt.month, dt.day, dt.year)
Run Code Online (Sandbox Code Playgroud)

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


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

  • %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 Microsecond为十进制数,左侧为零填充.000000,...,999999
  • %z UTC偏移量,格式为+ HHMM或-HHMM(如果天真,则为空),+ 0000,-0400,+ 1030
  • %Z 时区名称(如果天真,则为空),UTC,EST,CST
  • %j 一年中的一天作为零填充十进制数.001,...,366
  • %U 一年中的周数(星期日是第一个)作为零填充十进制数.
  • %W 一年中的周数(星期一是第一个)作为十进制数.
  • %c Locale的适当日期和时间表示.
  • %x Locale的适当日期表示.
  • %X Locale的适当时间表示.
  • %% 文字'%'字符.

  • 最性感的答案版本在这里 (4认同)

Pau*_*man 26

另外一个选项:

import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'
Run Code Online (Sandbox Code Playgroud)

  • 虽然问题是关于“仅约会”,但我是为了^这个而来,所以谢谢。另外,要获得更人性化的字符串: `datetime.datetime.now().ctime()` ==> `'Wed Sep 4 13:12:39 2019'` (2认同)

Dom*_*ano 17

您可以通过以下方式轻松将日期时间转换为字符串:

from datetime import datetime

date_time = datetime(2012, 2, 23, 0, 0)
date = date_time.strftime('%m/%d/%Y')
print("date: %s" % date)
Run Code Online (Sandbox Code Playgroud)

这些是可用于将日期时间转换为字符串的一些模式:

日期时间到字符串模式

为了更好地理解,你可以看看这篇关于如何在Python中将字符串转换为日期时间和日期时间转换为字符串的文章官方strftime文档


jul*_*ria 13

您可以使用简单的字符串格式化方法

>>> dt = datetime.datetime(2012, 2, 23, 0, 0)
>>> '{0.month}/{0.day}/{0.year}'.format(dt)
'2/23/2012'
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year)
'2/23/2012'
Run Code Online (Sandbox Code Playgroud)

  • 类似地,你可以做类似`'{{%Y-%m-%d%H:%M}'.format(datetime(2001,2,3,4,5))`.在pyformat.info上查看更多信息 (3认同)

SAR*_*ose 11

迄今为止最性感的版本是带有格式字符串的。

from datetime import datetime

print(f'{datetime.today():%Y-%m-%d}')
Run Code Online (Sandbox Code Playgroud)


Dan*_*kin 10

如果您正在寻找一种简单的datetime字符串转换方法并且可以省略格式。您可以将datetime对象转换为str然后使用数组切片。

In [1]: from datetime import datetime

In [2]: now = datetime.now()

In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'

In [5]: str(now)[:10]
Out[5]: '2019-04-26'

In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'
Run Code Online (Sandbox Code Playgroud)

但请注意以下事项。如果其他解决方案会AttributeError在变量None处于这种情况下时上升,您将收到一个'None'字符串。

In [9]: str(None)[:19]
Out[9]: 'None'
Run Code Online (Sandbox Code Playgroud)


mid*_*ori 9

type-specific formatting 也可以使用:

t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)
Run Code Online (Sandbox Code Playgroud)

输出:

'02/23/2012'
Run Code Online (Sandbox Code Playgroud)


phi*_*294 6

如果你也想要时间,那就去吧

datetime.datetime.now().__str__()
Run Code Online (Sandbox Code Playgroud)

2019-07-11 19:36:31.118766为我在控制台中打印