Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/plotext/_date.py: 69%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from datetime import datetime as dt
2from datetime import timezone as tz # useful for dates before 1970 in windows
4class date_class():
6 def __init__(self):
7 self.date_form()
8 self.time0 = 0
9 self.set_time0('01/01/1900')
11 def date_form(self, input_form = None, output_form = None): # it sets the datetime form used for functions that output date string and input date string
12 input_form = 'd/m/Y' if input_form is None else input_form
13 output_form = input_form if output_form is None else output_form
14 self.input_form = self.correct_form(input_form)
15 self.output_form = self.correct_form(output_form)
17 def set_time0(self, string, input_form = None): # the origin of time, useful for log scale not to hit the 0 timestamp
18 self.time0 = self.string_to_time(string, input_form, 0)
20 def today_datetime(self): # today in datetime form
21 return dt.today()
23 def today_string(self, output_form = None): # today in string form
24 return self.datetime_to_string(self.today_datetime(), output_form)
26 def datetime_to_string(self, datetime, output_form = None): # from datetime form to string form
27 output_form = self.output_form if output_form is None else self.correct_form(output_form)
28 return datetime.strftime(output_form)
30 def datetimes_to_strings(self, datetimes, output_form = None): # from datetime form to string form
31 return [self.datetime_to_string(el, output_form) for el in datetimes]
33 def string_to_datetime(self, string, input_form = None): # from date and times in string form to standard datetime input_form
34 input_form = self.input_form if input_form is None else self.correct_form(input_form)
35 return dt.strptime(string, input_form)
37##############################################
38############ Utilities ################
39##############################################
41 def correct_form(self, date_form):
42 return ''.join(['%' + el if el.isalpha() else el for el in date_form])
44 def string_to_time(self, string, input_form = None, time0 = None):
45 input_form = self.input_form if input_form is None else self.correct_form(input_form)
46 time0 = self.time0 if time0 is None else time0
47 try:
48 return dt.strptime(string, input_form).replace(tzinfo = tz.utc).timestamp() - time0
49 except:
50 raise ValueError('Date Form should be: ' + input_form)
52 def strings_to_time(self, strings, input_form = None):
53 return [self.string_to_time(el, input_form) for el in strings]
55 def time_to_string(self, time, output_form = None):
56 return self.datetime_to_string(dt.fromtimestamp(time + self.time0), output_form)
58 def times_to_string(self, times, input_form = None):
59 return [self.time_to_string(el, input_form) for el in times]