def __add__(self, other):
if self and isinstance(other, (datetime.timedelta)):
t = self._time
t = datetime.datetime(2012, 6, 27, t.hour, t.minute, t.second, t.microsecond)
t += other
return Time(t.hour, t.minute, t.second, t.microsecond)
else:
return NotImplemented
python类second()的实例源码
def __rsub__(self, other):
if self and isinstance(other, (Time, datetime.time)):
t = self._time
t = datetime.datetime(2012, 6, 27, t.hour, t.minute, t.second, t.microsecond)
other = datetime.datetime(2012, 6, 27, other.hour, other.minute, other.second, other.microsecond)
other -= t
return other
else:
return NotImplemented
def __repr__(self):
if self:
return "Time(%d, %d, %d, %d)" % (self.hour, self.minute, self.second, self.microsecond)
else:
return "Time()"
def replace(self, hour=None, minute=None, second=None, microsecond=None, delta_hour=0, delta_minute=0, delta_second=0):
if not self:
return self.__class__._null_time
old_hour, old_minute, old_second, old_micro = self.hour, self.minute, self.second, self.microsecond
hour = (hour or old_hour) + delta_hour
minute = (minute or old_minute) + delta_minute
second = (second or old_second) + delta_second
microsecond = microsecond or old_micro
while not (0 <= hour < 24) or not (0 <= minute < 60) or not (0 <= second < 60):
while second < 0:
minute -= 1
second = 60 + second
while second > 59:
minute += 1
second = second - 60
while minute < 0:
hour -= 1
minute = 60 + minute
while minute > 59:
hour += 1
minute = minute - 60
while hour < 1:
hour = 24 + hour
while hour > 23:
hour = hour - 24
return Time(hour, minute, second, microsecond)
def tofloat(self):
"returns Time as a float"
hour = self.hour
minute = self.minute * (1.0 / 60)
second = self.second * (1.0 / 3600)
microsecond = self.microsecond * (1.0 / 3600000)
return hour + minute + second + microsecond
def __init__(self, year=None, month=None, day=None, hour=None, minute=None, second=None, microsecond=None):
params = vars()
self._mask = {}
for attr in ('year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond'):
value = params[attr]
if value is not None:
self._mask[attr] = value
def __repr__(self):
items = []
for attr in ('year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond'):
if attr in self._mask:
items.append('%s=%s' % (attr, self._mask[attr]))
return "Period(%s)" % ', '.join(items)
def build(self):
global root
root = ROOT() #set root widget (does nothing)
clockwidget = CLOCK() #sets clock widget
messagewidget = MESSAGE() #sets the message widget
analogclock = MyClockWidget() #sets the analog clock widget
cabintempwidget = CabinTempWidget() #sets the temp widget in upper right corner on main screen
obdgaugewidget = OBDGaugeWidget() #sets the gauge widget in the middle of the screen
Clock.schedule_interval(clockwidget.update, .1) #updates the main menu clock
Clock.schedule_interval(analogclock.ticks.update_clock, .1) #updates the analog clock
Clock.schedule_interval(messagewidget.update, .104556) #updates the message display
#Clock.schedule_once(cabintempwidget.update) #call once to get initial temp
Clock.schedule_interval(cabintempwidget.update, .1) #updates the temp every 10th second
Clock.schedule_interval(obdgaugewidget.update, .1) #updates the temp every 10th second
#add the widgets
root.add_widget(KVFILE) #adds the main GUI
root.add_widget(clockwidget) #main digital clock
root.add_widget(analogclock) #analog clock
root.add_widget(messagewidget) #adds message widget
root.add_widget(cabintempwidget) #adds temp widget
root.add_widget(obdgaugewidget) #adds obd gauge widget
return root
def prepLine(lineDict, mappings):
result = []
if lineDict['category'] in mappings['category']:
result.append(mappings['category'].index(lineDict['category']))
else:
result.append(-1)
if lineDict['behaviour'] in mappings['behaviour']:
result.append(mappings['behaviour'].index(lineDict['behaviour']))
else:
result.append(-1)
if lineDict['connection'] in mappings['connection']:
result.append(mappings['connection'].index(lineDict['connection']))
else:
result.append(-1)
day = datetime.datetime.fromtimestamp(lineDict['unix_timestamp']).weekday()
time = datetime.datetime.fromtimestamp(lineDict['unix_timestamp']).time()
seconds = time.hour*3600 + time.minute*60 + time.second
result.append(day)
result.append(seconds)
#result.append(time.hour)
if lineDict['safe_connection'] in mappings['safe_connection']:
result.append(mappings['safe_connection'].index(lineDict['safe_connection']))
else:
result.append(-1)
return [result] # wrap result in a list to be directly usable in model.predict (todo: test if it is necessary)
def _date_time_to_datetime(date, time=None):
if not time:
time = datetime.time()
return datetime.datetime(date.year, date.month, date.day, time.hour, time.minute, time.second)