52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
'''
|
|
Created on Wed Jun 21 13:58:42 2023
|
|
|
|
@author: michael
|
|
'''
|
|
|
|
# create slices
|
|
def get_Tslices(ts_beg, ts_end, no_slices):
|
|
"""Splits the time-period between two points in time into #no_slices and returns start and end time of each slice period.
|
|
|
|
Args:
|
|
ts_beg (datetime): Datetime start of overall period to be sliced.
|
|
ts_end (datetime): Datetime end of overall period to be sliced.
|
|
no_slices (int): number of slices. 24 e.g. will produce 24 start and end dates each.
|
|
|
|
Returns:
|
|
list[dict[str:datetime|str]]: One dict for each containing 'beg_time' 'end_time' and 'suffix' (e.g. -slice1)
|
|
"""
|
|
from datetime import datetime
|
|
from datetime import timedelta
|
|
ts_beg = datetime.strptime(ts_beg, '%Y-%m-%dT%H:%M:%SZ')
|
|
ts_end = datetime.strptime(ts_end, '%Y-%m-%dT%H:%M:%SZ')
|
|
ts_dif = (ts_end - ts_beg) / no_slices
|
|
time_slices = []
|
|
for i in range(no_slices):
|
|
time_slices.append(
|
|
{
|
|
'beg_time': (ts_beg + ts_dif * i).strftime('%Y-%m-%dT%H:%M:%SZ'),
|
|
'end_time': (ts_beg + ts_dif * i + ts_dif - timedelta(microseconds=1)).strftime('%Y-%m-%dT%H:%M:%SZ'),
|
|
'suffix': f'-slice{i+1}'
|
|
})
|
|
return time_slices
|
|
|
|
# For log time conversions (seconds to days, hours, minutes)
|
|
def convertTime(duration):
|
|
"""Converts seconds to hours, minutes and seconds.
|
|
|
|
Args:
|
|
duration (int): seconds
|
|
|
|
Returns:
|
|
int: hours
|
|
int: minutes
|
|
int: seconds
|
|
"""
|
|
days, seconds = duration.days, duration.seconds
|
|
hours = days * 24 + seconds // 3600
|
|
minutes = (seconds % 3600) // 60
|
|
seconds = (seconds % 60)
|
|
return hours, minutes, seconds |