我在Python中将日期字符串转换为datetime
对象时看到了很多,但我想转向其他方式。
我有
datetime.datetime(2012, 2, 23, 0, 0)
我希望将其转换为'2/23/2012'
字符串。
答案 0 :(得分:423)
您可以使用strftime来帮助您设置日期格式。
如,
import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')
将产生:
'02/23/2012'
有关格式化的详细信息,请参阅here
答案 1 :(得分:153)
date
和datetime
个对象(以及time
)也支持mini-language to specify output,有两种方法可以访问它:
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
工作日作为语言环境的缩写名称。 %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
Locale的适当日期和时间表示。 %x
Locale的适当日期表示。 %X
Locale的适当时间表示。 %%
字面意思'%'字符。答案 2 :(得分:21)
另一种选择:
import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'
答案 3 :(得分:12)
您可以使用简单的字符串格式化方法:
>>> 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'
答案 4 :(得分:9)
type-specific formatting
也可以使用:
t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)
输出:
'02/23/2012'
答案 5 :(得分:2)
字符串连接str.join
可用于构建字符串。
d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'
答案 6 :(得分:2)
您可以将datetime转换为字符串。
published_at = "{}".format(self.published_at)
答案 7 :(得分:2)
可以通过直接使用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日
答案 8 :(得分:2)
迄今为止最性感的版本是格式字符串。
//you has an array of params
params=[0,1,2,3,4,5]
//you create an array of "calls" using map to transform the array
const calls:Observable<any>[]=this.params.map(x=>this.dataMlService.getData(x)
//you use forkJoin and subscribe
forkJoin(calls.susbcribe(res=>{
//in res[0] you has the response to this.dataMlService.getData(0)
//in res[1] you has the response to this.dataMlService.getData(1)
....
console.log(res)
})
答案 9 :(得分:2)
您可以通过这种方式轻松地将日期时间转换为字符串:
from datetime import datetime
date_time = datetime(2012, 2, 23, 0, 0)
date = date_time.strftime('%m/%d/%Y')
print("date: %s" % date)
这些是您可以用来将日期时间转换为字符串的一些模式:
为了更好地理解,您可以在how to convert strings to datetime and datetime to string in Python或official strftime
documentation
答案 10 :(得分:0)
如果您正在寻找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'
但是请注意以下几点。在这种情况下,如果其他解决方案在变量为AttributeError
时会引起None
的变化,您将收到一个'None'
字符串。
In [9]: str(None)[:19]
Out[9]: 'None'
答案 11 :(得分:0)
如果您还想要时间,那就去
datetime.datetime.now().__str__()
在控制台中为我打印2019-07-11 19:36:31.118766
答案 12 :(得分:0)
end_date = "2021-04-18 16:00:00"
end_date_string = end_date.strftime("%Y-%m-%d")
打印(end_date_string)