仅在Python中将datetime对象转换为datestring

我看到很多在Python中将datetimestring转换为datetime对象,但是我想以另一种方式。
我有datetime.datetime(2012, 2, 23, 0, 0) '2/23/2012' datetime.datetime(2012, 2, 23, 0, 0) ,我想将其转换为像'2/23/2012'string。

您可以使用strftime来帮助您设置date的格式。

例如,

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

会产生:

 '02/23/2012' 

有关格式化的更多信息,请看这里

datedatetime time对象(以及time )支持迷你语言来指定输出 ,并且有两种访问方式:

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

所以你的例子可能看起来像:

 dt.strftime('%m/%d/%Y') 

要么

 '{:%m/%d/%Y}'.format(dt) 

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

 '%s/%s/%s' % (dt.month, dt.day, dt.year) 

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


作为参考,这里是在迷你语言中使用的代码:

  • %a Weekday作为语言环境的缩写名称。
  • %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 UTC时差+ HHMM或-HHMM(天真时为空),+0000,-0400,+1030
  • %Z时区名称(天真时为空),UTC,EST,CST
  • %j作为零填充十进制数的一年中的某一天。 001,…,366
  • %U一年中的星期数(星期天是第一个)作为零填充十进制数。
  • %W一年中的星期数(星期一是第一个)作为十进制数。
  • %c区域设置的适当的date和时间表示。
  • %x区域设置的适当的date表示。
  • %X区域设置适当的时间表示。
  • %%文字'%'字符。

另外一个select:

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

你可以使用简单的string格式化方法:

 >>> 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' 

type-specific formatting也可以使用:

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

输出:

 '02/23/2012' 

string连接str.join可以用来构buildstring。

  d = datetime.now() '/'.join(str(x) for x in (d.month, d.day, d.year)) '3/7/2016' 

您可以将date时间转换为string。 published_at="{}".format(self.published_at)

通过直接处理date时间对象的组件,可以将date时间对象转换为string。

 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) 

输出 – > 5/23/2017