python中的日期
1.存在形式:
时间只以三种形式存在,即int(float)、str、date
2.格式:
年、月、日:%y、%m、%d #对于年,四位数的格式是大写的%Y,小写的%y市两位数的年,如99年
时、分、秒:%H、%M、%S
3.转换
from datetime import datetime
- datetime.strptime(str,'str的格式') #str->date
- datetime.strftime(date,'str的格式') #date->str
- datetime.fromtimestamp(int) #int->date
- datetime.timestamp(date) #date->float (10位的秒级,float类型。可以*1e+3,1e+6变成对应的毫秒和微秒)
4.两种场景
场景一:
输入:int(float)
输出:date、str
实例:
t_int = 10.1
t_date = datetime.fromtimestamp(t_int)
t_str = datetime.strftime(t_date, '%Y-%m-%d %H:%M:%S')
print(t_date,t_str)
场景二:
输入:str
输出:date、int(float)
实例:
t_str = '2000-01-01'
t_date = datetime.strptime(t_str, '%Y-%m-%d')
t_int = datetime.timestamp(t_date)
print(t_date,t_int)
附:OSError: [Errno 22] Invalid argument
常为输入的int为负数,或者date小于1970,超出处理范围了。
5.时间相加
from dateutil.relativedelta import relativedelta
df['date'] = df.date.map(lambda x: x + relativedelta(years=4))
6.时间截取
datetime类型:
截取年月日: df['ts_date'] = df.ts_datetime.map(lambda x: x.date()) #输入为datetime类型,输出为'datetime.date(可以直接用str转成字符串)
截取时分秒:df['ts_time'] = df.ts_datetime.map(lambda x: x.time()) #输入为datetime类型,输出为'datetime.date
字符串类型:
直接切片
浙公网安备 33010602011771号