datetime 模块提供用于处理日期和时间的类。
配置
py库安装
conda install datetime
导入所需要的包
from datetime import timedelta
from datetime import date,time
from datetime import datetime
基础知识
timedelta
对象表示两个 date 或者 time 的时间间隔。
delta = timedelta(
days=50,
seconds=27,
microseconds=10,
milliseconds=29000,
minutes=5,
hours=8,
weeks=2
)
print(delta)
#out输出的是天数,时,分,秒,
#即只有 days, seconds 和 microseconds 会存储在内部
#64 days, 8:05:56.000010
date和time的区别
a = datetime.now()
print(a)
YMD=a.date()
print(YMD)
YFM=a.time()
print(YFM)
#OUT
'''
2022-01-01 22:27:35.713060
2022-01-01
22:27:35.713060'''
结果可以看出,date是年月日,time是时分秒
日期的两种形式,即datetime和string,其相互转换
now = datetime.datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')
t_str = '2022-01-02 16:26:23'
d = datetime.datetime.strptime(t_str, '%Y-%m-%d %H:%M:%S')
日期加减
利用datetime加减timedelta:
time_str = "2022-01-01 12:00:00"
d1 = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
print(d1)
d2 = d1 +timedelta(days=2)
print(d2)
#OUT
'''
2022-01-01 12:00:00
2022-01-03 12:00:00'''
利用timedelta是时间增减的好办法,有时时间序列数据的time变量值可能是:
[21184. 21215. 21243. 21274. 21304. 21335. 21365. 21396. 21427. 21457.
21488. 21518.]
可以用初始时间加上timedelta得到其datetime,如:
time_str = "1900-01-01 12:00:00"#该数据基准时间为1900-01-01
d1 = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
ll=[]
for i in l:
#l为[21184. 21215. 21243. 21274. 21304. 21335.
#21365. 21396. 21427. 21457.21488. 21518.]
ll.append( d1 +timedelta(days=i))
print(np.array(ll))
#OUT
'''
[datetime.datetime(2020, 1, 1, 12, 0) datetime.datetime(2020, 2, 1, 12, 0)
datetime.datetime(2020, 3, 1, 12, 0) datetime.datetime(2020, 4, 1, 12, 0)
datetime.datetime(2020, 5, 1, 12, 0) datetime.datetime(2020, 6, 1, 12, 0)
datetime.datetime(2020, 7, 1, 12, 0) datetime.datetime(2020, 8, 1, 12, 0)
datetime.datetime(2020, 9, 1, 12, 0)
datetime.datetime(2020, 10, 1, 12, 0)
datetime.datetime(2020, 11, 1, 12, 0)
datetime.datetime(2020, 12, 1, 12, 0)]'''
建立时间序列
以建立半小时尺度的步长时间序列为例:
time_str = "2020-01-01 12:00:00"
d2 = datetime.strptime(time_str, '%Y-%m-%d %H:%M:%S')
TIME=[]
for i in range(4):
d2 = d2 +timedelta(hours=1)
TIME.append(d2)
print(TIME)
#OUT输出为datetime格式
'''
[datetime.datetime(2020, 1, 1, 13, 0),
datetime.datetime(2020, 1, 1, 14, 0),
datetime.datetime(2020, 1, 1, 15, 0),
datetime.datetime(2020, 1, 1, 16, 0)]'''
欢迎关注公众号遥感迷,一起学习探究