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)
python类minute()的实例源码
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 time(self):
if self:
return Time(self.hour, self.minute, self.second, self.microsecond)
return Time()
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
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 update(self):
self.canvas.delete("updates")
string1 = daysOfWeek[self.dateAndTime.weekday()] + ", " + months[self.dateAndTime.month] + " " + str(self.dateAndTime.day)
if TWENTY_FOUR_HOUR_CLOCK:
string2 = "{:02d}:{:02d}:{:02d}".format(self.dateAndTime.hour, self.dateAndTime.minute, self.dateAndTime.second)
else:
hour, suffix = toTwelveHourClock(self.dateAndTime)
string2 = "{:02d}:{:02d}:{:02d} {:s}".format(hour, self.dateAndTime.minute, self.dateAndTime.second, suffix)
self.canvas.create_text((self.width // 2, self.height * .30), text=string1, fill=fontColor, font=self.font, tags="updates")
self.canvas.create_text((self.width // 2, self.height * .70), text=string2, fill=fontColor, font=self.font, tags="updates")
def update(self):
self.canvas.delete("updates")
self.show()
if self.game["status"] == "Pre":
topString = "{:3s} @ {:3s}".format(self.game["away"]["name"], self.game["home"]["name"])
ast = self.game["adjustedStartTime"]
if TWENTY_FOUR_HOUR_CLOCK:
botString = "{:s} {:d}, {:02d}:{:02d}".format(months[ast.month], ast.day, ast.hour, ast.minute)
else:
hour, suffix = toTwelveHourClock(ast)
botString = "{:s} {:d}, {:02d}:{:02d} {:s}".format(months[ast.month], ast.day, hour, ast.minute, suffix)
awayLogo = self.scaledLogos[self.game["away"]["name"]]
homeLogo = self.scaledLogos[self.game["home"]["name"]]
# Center logo
awayLogoXOffset = (self.awayLogoRegion.width - awayLogo.width()) // 2
awayLogoYOffset = (self.awayLogoRegion.height - awayLogo.height()) // 2
homeLogoXOffset = (self.homeLogoRegion.width - homeLogo.width()) // 2
homeLogoYOffset = (self.homeLogoRegion.height - homeLogo.height()) // 2
lineY = self.lineYStart
self.canvas.create_image((self.awayLogoRegion.left + awayLogoXOffset, self.awayLogoRegion.top + awayLogoYOffset), anchor=tk.NW, image=awayLogo, tags="updates")
self.canvas.create_image((self.homeLogoRegion.left + homeLogoXOffset, self.homeLogoRegion.top + homeLogoYOffset), anchor=tk.NW, image=homeLogo, tags="updates")
self.canvas.create_text((self.topX, lineY), anchor=tk.NW, text=topString, font=self.font, fill=fontColor, tags="updates")
lineY += self.lineHeight
self.canvas.create_text((self.botX, lineY), anchor=tk.NW, text=botString, font=self.font, fill=fontColor, tags="updates")
else:
self.canvas.create_text((self.width // 2, self.height //2), anchor=tk.CENTER, text="No games found...", font=self.font, fill=fontColor, tags="updates")
def combine(self, date, time):
return datetime(date.year, date.month, date.day, time.hour, time.minute, time.microsecond, time.tzinfo)
def new_datetime(d):
"""
Generate a safe datetime from a datetime.date or datetime.datetime object.
"""
kw = [d.year, d.month, d.day]
if isinstance(d, real_datetime):
kw.extend([d.hour, d.minute, d.second, d.microsecond, d.tzinfo])
return datetime(*kw)
# This library does not support strftime's "%s" or "%y" format strings.
# Allowed if there's an even number of "%"s because they are escaped.
def get_time():
"""
Current time (HHMM).
The return value is a string.
"""
now = datetime.now()
time = datetime.time(now)
return "{hour:02}{minute:02}".format(hour=time.hour, minute=time.minute)
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)
def update(self):
self.canvas.delete("updates")
self.textY = 0
lastDateLabelDay = None
firstHour = True
for hour in self.weather:
time = hour["time"]
if time.day != lastDateLabelDay:
dayString = months[time.month] + " " + str(time.day)
# New lines
if lastDateLabelDay is not None:
self.textY += self.lineHeight
self.textY += self.lineHeight
dayTextOffset = self.font.measure(" ")
textPosition = (max(0, self.textX - dayTextOffset), self.textY)
self.canvas.create_text(textPosition, anchor=tk.NW, text=dayString, font=self.underlinedFont, fill=fontColor, tags="updates")
self.textY += self.lineHeight * 1.2 # just a little extra padding here looks better
lastDateLabelDay = time.day
if TWENTY_FOUR_HOUR_CLOCK:
hourString = " {:02d}:{:02d}".format(time.hour, time.minute) + " - " + "{:>3s}".format(hour["temp"]) + " F "
else:
timeHour, suffix = toTwelveHourClock(time)
hourString = " {:02d}:{:02d} {:s}".format(timeHour, time.minute, suffix) + " - " + "{:>3s}".format(hour["temp"]) + " F "
hourFontColor = fontColor
if firstHour:
hourFontColor = "black"
# draw a yellowish highlight on the current hour
highlightColor = '#FFFF99'
highlightX1 = self.textX
highlightY1 = self.textY - ((self.lineHeight - self.fontHeight) / 2)
highlightX2 = highlightX1 + self.font.measure(hourString)
highlightY2 = highlightY1 + self.lineHeight
self.canvas.create_rectangle((highlightX1, highlightY1, highlightX2, highlightY2), fill=highlightColor, tags="updates")
self.canvas.create_text((self.textX, self.textY), anchor=tk.NW, text=hourString, font=self.font, fill=hourFontColor, tags="updates")
icon = self.weatherIcons[hour["condition"]]
self.canvas.create_image((self.iconX, self.textY), anchor=tk.NW, image=icon, tags="updates")
self.textY += self.lineHeight
firstHour = False
def update(self, *args):
time_hour = time.strftime("%I") #time_hour
if time_hour[0] == "0": #one digit format
time_hour = " "+time_hour[1]
time_minute = time.strftime("%M") #time_minute
global time_second_mod
time_second_mod = int(float(time_second_mod))+1
if time_second_mod > 10000000: #doesnt allow this var to get too big
time_second_mod = 0
time_now = time_hour+":"+time_minute #create sting format (hour:minute)
if clock == 1: #default - on main screens - top center
self.font_size = 40 #50 for center
self.pos = (345, 216) #0, 200 for center
self.text = time_now
if clock == 0: #shows nothing
self.font_size = 60
self.pos = (0,190)
self.text = " "
if clock == 2: #top left - larger - for info clock
self.font_size = 140
self.text = time_now
self.pos = (-200,150)
if clock == 3: #center - for worm clock
self.font_size = 60
self.pos = (0,36)
self.text = time_now
if clock == 4: #top right - for menu screens
self.font_size = 40 #40
self.pos = (345, 216) #212
self.text = time_now
#VARIABLE PRINTER
#to use - comment out the normal clock == 1 if, and choose a type of var and uncomment
#if clock == 1:
#self.font_size = 30
#self.pos = (0,190)
#self.text = "%d" %time.hour #+ "%d" %WINDOWSDOWNON #for numbers
#self.text = str(SettingsScreen.buttons.analogclockswitch.active) #for strings