2.datatime常见操作
1.时间字符串转为datetime格式
datetime.strptime可以将字符串转换成日期,strptime的第二个参数是时间日期的格式:
1 import datetime 2 a = '20200913' 3 print (a) 4 b = datetime.datetime.strptime(str(a), "%Y%m%d") 5 print (b)
输出:
2020-09-13 2020-09-13 00:00:00
两者的类型发生了变化:
<type 'str'>
<type 'datetime.datetime'>
1 c= datetime.datetime.strftime('20200201', "%Y%m%d") 2 print(c)
2020-09-12
二、获取当前时间
1 datetime.datetime.now()
三、判断出生日期
四、获取两个时间的天数差值
1 time1 = datetime.datetime.strptime('20200913',"%Y%m%d") 2 time2 = datetime.datetime.strptime('20210212',"%Y%m%d") 3 time = (time2-time1).days 4 time
结果:
152
五、填充空值为最小时间
pd.Timestamp.min #包含时间 # Timestamp('1677-09-21 00:12:43.145225') pd.Timestamp.min.ceil('D') #不包含时间 # Timestamp('1677-09-22 00:00:00') pd.to_datetime(df['date'].fillna(pd.Timestamp.min))
六、将Excel中的时间戳格式转化为python中的时间格式
注:此答案仅适用于1900/03/01之后的任何日期
1 from datetime import datetime 2 excel_date = 43040 3 dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + excel_date - 2) 4 tt = dt.timetuple() 5 dt 6 tt
输出结果:
1 datetime.datetime(2017, 11, 1, 0, 0) 2 3 time.struct_time(tm_year=2017, tm_mon=11, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=305, tm_isdst=-1)
如果您的 excel_date 是浮点数,请使用以下代码:
1 def floatHourToTime(fh): 2 h,r = divmod(fh,1) 3 m,r = divmod(r * 60,1) 4 回报( 5 int(h), 6 int(m), 7 int(r * 60), 8 ) 9 10 excel_date = 42139.23213 11 dt = datetime.fromordinal(datetime(1900,1,1).toordinal()+ int(excel_date)-2) 12 小时,分钟,秒= floatHourToTime(excel_date%1) 13 dt = dt.replace (小时=小时,分钟=分钟,秒=秒)
pandas中应用
1 from datetime import datetime 2 def data_transfor(x): 3 try: 4 dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + x - 2) 5 year = dt.year 6 return year 7 except: 8 return pd.Timestamp.min.ceil('D').year 9 work_data['就业年份'] = work_data['就业时间'].apply(data_transfor)