本节结合实例介绍MATLAB和Python中与时间段和时间差有关的应用。[大谦MATLAB,dqmatlab点com]
计算两个日期之间的间隔天数
本例给定两组表示日期的字符串数组,第1个数组表示活动起始日期,第2个数组表示活动终止日期。用MATLAB和Python计算各次活动的天数。
【MATLAB】
先用字符串数组给出活动起始日期和活动终止日期,用datetime函数将它们转换为指定格式的日期。
code.matlab
>> start=["2023-5-1","2023-5-16","2023-6-1","2023-6-15"];
>> endd=["2023-5-31","2023-5-31","2023-6-30","2023-6-30"];
>> start_day=datetime(start,'InputFormat','yyyy-MM-dd');
>> end_day=datetime(endd,'InputFormat','yyyy-MM-dd');
用终止日期减去起始日期,返回以小时计数的活动时间长度。
code.matlab
>> dt=end_day-start_day
dt=
1×4 duration 数组
720:00:00 360:00:00 696:00:00 360:00:00
将活动时长除以24,得到活动天数。
code.matlab
>> dt/24
ans=
1×4 duration 数组
30:00:00 15:00:00 29:00:00 15:00:00
【Python】
先用字符串数组给出活动起始日期和活动终止日期,用to_datetime函数将它们转换为日期。
code.python
>>> import pandas as pd
>>> start=['2023-5-1','2023-5-16','2023-6-1','2023-6-15']
>>> endd=['2023-5-31','2023-5-31','2023-6-30','2023-6-30']
>>> start_day=pd.to_datetime(start)
>>> end_day=pd.to_datetime(endd)
用终止日期减去起始日期,返回活动天数。
code.python
>>> dt=end_day-start_day
>>> dt
TimedeltaIndex(['30 days', '15 days', '29 days', '15 days'], dtype='timedelta64[ns]', freq=None)
已知起始日期和间隔天数计算终止日期
本例给出各员工的休假起始时间和休假天数,用MATLAB和Python计算休假终止时间。假设休假天数都是7天。
【MATLAB】
先用字符串数组给出休假起始日期,用datetime函数将它们转换为指定格式的日期。
code.matlab
>> ds=["2023-4-12","2023-4-18","2023-5-2"];
>> dt=datetime(ds,'InputFormat','yyyy-MM-dd');
用休假起始日期加上days函数生成的时间差7,即休假时长7天,得到休假终止日期。
code.matlab
>> de=dt+days(7)
de=
1×3 datetime 数组
2023-04-19 2023-04-25 2023-05-09
【Python】
Python中用pandas包进行处理。先用列表给出字符串表示的休假起始日期,并用该列表创建一个Series对象。
code.python
>>> import pandas as pd
>>> ds=['2023-4-12','2023-4-18','2023-5-2']
>>> ds2=pd.Series(ds)
用to_datetime函数将字符串转换为日期。
>>> dt=pd.to_datetime(ds2)
用Series对象的apply方法,使用匿名函数将原来的日期替换为原来日期加7以后的休假终止日期。
>>> dt2=dt.apply(lambda x:x.replace(day=x.day+7))
>>> dt2
0 2023-04-19
1 2023-04-25
2 2023-05-09
dtype: datetime64[ns]