-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtime_utils.py
More file actions
73 lines (64 loc) · 2.84 KB
/
time_utils.py
File metadata and controls
73 lines (64 loc) · 2.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# -*- coding: utf-8 -*-
import datetime
def getTimeOfDay(cfg, sefType, time, date):
if "changetimeOfDay" in cfg and cfg["changetimeOfDay"]["active"] is True:
for timeChange in cfg["timeChanges"]:
if sefType in timeChange["sefTypes"]:
for change in timeChange["changes"]:
if (change["fromTime"] == time and
date >= datetime.datetime.strptime(change["fromDate"], "%Y-%m-%d") and
date <= datetime.datetime.strptime(change["toDate"], "%Y-%m-%d")):
return change["toTime"]
return time
def getDateTimeResult(cfg, t, timeOfDay, result_day):
utcOffset = 0
if (timeOfDay == "mean" or timeOfDay == "total" or timeOfDay == "daily"):
period = '24'
hour = 0
minute = '00'
dateResult = ''
elif timeOfDay == "sunrise":
period = '0'
hour = 6
minute = "{0:02d}".format(int(0+60*(utcOffset-int(utcOffset))))
else:
period = '0'
overridenTimeOfDay = getTimeOfDay(cfg, t, timeOfDay, result_day)
hour = int(overridenTimeOfDay[:2])
minute = int(overridenTimeOfDay[2:])
# hour=hour + utcOffset
minute = "{0:02d}".format(int(minute+60*(utcOffset-int(utcOffset))))
result_day = result_day + datetime.timedelta(hours=hour, minutes=int(minute))
return (result_day)
def getUTCResultDay(utcOffset, cfg, t, timeOfDay, result_day):
if (timeOfDay == "mean" or timeOfDay == "total" or timeOfDay == "daily"):
period = '24'
hour = 0
minute = '00'
elif timeOfDay == "sunrise":
period = '0'
hour = 6 + utcOffset
minute = "{0:02d}".format(int(0+60*(utcOffset-int(utcOffset))))
else:
period = '0'
overridenTimeOfDay = getTimeOfDay(cfg, t, timeOfDay, result_day)
hour = int(overridenTimeOfDay[:2])
minute = int(overridenTimeOfDay[2:])
hour = hour + utcOffset
minute = "{0:02d}".format(int(minute+60*(utcOffset-int(utcOffset))))
utc_result_day = result_day + datetime.timedelta(hours=hour, minutes=int(minute))
return (period, utc_result_day, hour, minute)
def getUnit(cfg, unit,sefType, date):
if "unitOverride" in cfg:
for override in cfg["unitOverride"]:
if override["type"] == sefType:
fromDate = "1000-01-01"
toDate = "2024-01-01"
if "fromDate" in override and override["fromDate"] != "":
fromDate = override["fromDate"]
if "toDate" in override and override["toDate"] != "":
toDate = override["toDate"]
if (date >= datetime.datetime.strptime(fromDate, "%Y-%m-%d") and
date <= datetime.datetime.strptime(toDate, "%Y-%m-%d")):
unit = override["unit"]
return unit