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

仅在Python中将datetime对象转换为日期字符串,python,datetime,Python,Datetime,在Python中,我看到了很多关于将日期字符串转换为datetime对象的内容,但我想换一种方式。 我有 datetime.datetime(2012, 2, 23, 0, 0) 我想把它转换成字符串,比如'2/23/2012',你可以用它来帮助你格式化日期 例如: 将产生: '02/23/2012' 有关格式化的详细信息,请参见您可以使用简单的字符串格式化方法: >>> dt = datetime.datetime(2012, 2, 23, 0, 0) >>&

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

datetime.datetime(2012, 2, 23, 0, 0)
我想把它转换成字符串,比如
'2/23/2012'

,你可以用它来帮助你格式化日期

例如:

将产生:

'02/23/2012'

有关格式化的详细信息,请参见

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

>>> 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'
也可用于:

t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)
输出:

'02/23/2012'

date
datetime
对象(以及
time
对象)支持a,有两种访问方式:

  • dt.strftime('format here')
  • (Python2.6+):
    “{:format here}”。format(dt)
  • (python 3.6+):
    f'{dt:format here}'
因此,您的示例可以如下所示:

  • dt.strftime('日期为%b%d,%Y')
  • “日期为{:%b%d,%Y}”。格式(dt)
  • f'日期为{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
花时间学习迷你语言是值得的


以下是mini语言中使用的代码供参考:

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

字符串连接,
str.join
,可用于构建字符串

d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'
另一种选择:

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

您可以将datetime转换为字符串

published_at = "{}".format(self.published_at)

通过直接使用datetime对象的组件,可以将datetime对象转换为字符串

from datetime import date  

myDate = date.today()    
#print(myDate) would output 2017-05-23 because that is today
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)    
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as
# an integer i change it to a string with str() and it is added to the "5/"   
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string.  Now we have "5/23/2017" as 
# a string. The final line prints the string.

print(dateStr)  

如果您正在寻找将
日期时间
转换为字符串的简单方法,并且可以省略格式,请输出-->2017年5月23日

。您可以将
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'
但请注意以下几点。如果当变量为
None
时,其他解决方案将出现
AttributeError
,在这种情况下,您将收到
'None'
字符串

In [9]: str(None)[:19]
Out[9]: 'None'

如果你也想要时间,就跟我走吧

datetime.datetime.now().__str__()

在console for me中打印
2019-07-11 19:36:31.118766

到目前为止,最性感的版本是带有格式字符串的

从日期时间导入日期时间
打印(f'{datetime.today():%Y-%m-%d})
end_date=“2021-04-18 16:00:00”

结束日期字符串=结束日期.strftime(“%Y-%m-%d”)


打印(结束日期字符串)

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

从日期时间导入日期时间
日期时间=日期时间(2012,2,23,0,0)
日期=日期\时间.strftime(“%m/%d/%Y”)
打印(“日期:%s”%date)
以下是一些可用于将datetime转换为字符串的模式:


为了更好地理解,您可以在上或上查看这篇文章

,类似地,您可以执行类似于
“{:%Y-%m-%d%H:%m}”的操作。格式(datetime(2001,2,3,4,5))
。有关django中的
DateTimeField
DateField
的详细信息,请参阅pyformat.info。Thanksuse
t=datetime.datetime.now()
要使用当前日期,从文档中我可以看出,没有办法返回非零填充日期,即'2/23/2012'。@Ron Kalian non-zero padded:
t.strftime('%-m/%-d/%-y')
f-strings如果使用python 3.6+,效果会更好。请看下面的答案虽然问题是关于“仅限约会”,但我是为此而来的,所以谢谢。另外,为了得到更人性化的字符串:
datetime.datetime.now().ctime()
==>
'Wed Sep 4 13:12:39 2019'
这里答案的最性感版本我认为我们对“性感”有不同的解释
datetime.datetime.now().__str__()