为了从字符串中提取时间,并进行比较,因此有了这个问题,如何将字符串转换成datetime类型
1.字符串与time类型的转换
>>> import time
>>> timestr = "time2009-12-14"
>>> t = time.strptime(timestr, "time%Y-%m-%d")
>>> print t
(2009, 12, 14, 0, 0, 0, 0, 348, -1)
>>> type(t)
<type 'time.struct_time'>
>>>
如代码所示使用strptime进行转换,第一个参数是要转换的字符串,第二个参数是字符串中时间的格式
与之对应的有函数strftime,是将time类型转换相应的字符串
下面是格式化符号汇总
%a 星期几的简写 Weekday name, abbr.
%A 星期几的全称 Weekday name, full
%b 月分的简写 Month name, abbr.
%B 月份的全称 Month name, full
%c 标准的日期的时间串 Complete date and time representation
%d 十进制表示的每月的第几天 Day of the month
%H 24小时制的小时 Hour (24-hour clock)
%I 12小时制的小时 Hour (12-hour clock)
%j 十进制表示的每年的第几天 Day of the year
%m 十进制表示的月份 Month number
%M 十时制表示的分钟数 Minute number
%S 十进制的秒数 Second number
%U 第年的第几周,把星期日做为第一天(值从0到53)Week number (Sunday first weekday)
%w 十进制表示的星期几(值从0到6,星期天为0)weekday number
%W 每年的第几周,把星期一做为第一天(值从0到53) Week number (Monday first weekday)
%x 标准的日期串 Complete date representation (e.g. 13/01/08)
%X 标准的时间串 Complete time representation (e.g. 17:02:10)
%y 不带世纪的十进制年份(值从0到99)Year number within century
%Y 带世纪部分的十制年份 Year number
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。Name of time zone
%% 百分号
2.time类型与datetime类型的转换
这一步比较简单,使用datetime函数,代码如下
>>> import datetime
>>> d = datetime.datetime(* t[:6])
>>> print d
2009-12-14 00:00:00
>>> type(d)
<type 'datetime.datetime'>
>>>
备忘,*表示将列表中的数据作为函数的参数,**表示将字典的数据作为函数的参数传入
实例:
import time
import datetime
timestr = '2008-12-24 12:58:45'
t = time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
>>> t
time.struct_time(tm_year=2008, tm_mon=12, tm_mday=24, tm_hour=12, tm_min=58, tm_sec=45, tm_wday=2, tm_yday=359, tm_isdst=-1)
d = datetime.datetime(* t[:6])
>>> d
datetime.datetime(2008, 12, 24, 12, 58, 45)
timestr = '2008-02-24 12:08:45'
>>> t = time.strptime(timestr,"%Y-%m-%d %H:%M:%S")
>>> t
time.struct_time(tm_year=2008, tm_mon=2, tm_mday=24, tm_hour=12, tm_min=8, tm_sec=45, tm_wday=6, tm_yday=55, tm_isdst=-1)
d = datetime.datetime(* t[:6])
>>> d
datetime.datetime(2008, 2, 24, 12, 8, 45)
datetime转化为所需的字符串:
import datetime
dt = datetime.datetime.now()
localtime = dt.strftime('%Y-%m-%d %H:%M:%S') #转化为date time
localtime
'2014-08-13 14:36:55'
type(localtime)
<type 'str'>
localtime2 = dt.strftime('%H:%M:%S')#转化为 date
localtime2
'14:36:55'
localtime3 = dt.strftime('%Y-%m-%d')#转化为 time
localtime3
'2014-08-13'