仅在Python中将datetime对象转换为datestring
我看到很多在Python中将datetime
string转换为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'
有关格式化的更多信息,请看这里
date
和datetime
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