利用datetime处理常见问题

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)]'''

欢迎关注公众号遥感迷,一起学习探究

利用datetime处理常见问题

 

上一篇:系统跨年的那些事儿


下一篇:docker 容器内部时间修改