def print_activity_charts(commentlist, submissionlist): hourdic = { "00:00" : 0, "01:00" : 0, "02:00" : 0, "03:00" : 0, "04:00" : 0, "05:00" : 0, "06:00" : 0, "07:00" : 0, "08:00" : 0, "09:00" : 0, "10:00" : 0, "11:00" : 0, "12:00" : 0, "13:00" : 0, "14:00" : 0, "15:00" : 0, "16:00" : 0, "17:00" : 0, "18:00" : 0, "19:00" : 0, "20:00" : 0, "21:00" : 0, "22:00" : 0, "23:00" : 0 } weekdaydic = { 0 : 0, 1 : 0, 2 : 0, 3 : 0, 4 : 0, 5 : 0, 6 : 0 } if len(commentlist) > 0: for comment in commentlist: time = datetime.datetime.utcfromtimestamp(comment['data']['created_utc']) hour = str(time.hour).zfill(2) + ":00" weekdaydic[time.weekday()] += 1 hourdic[hour] += 1 if len(submissionlist) > 0: for submission in submissionlist: time = datetime.datetime.utcfromtimestamp(submission['data']['created_utc']) hour = str(time.hour).zfill(2) + ":00" weekdaydic[time.weekday()] += 1 hourdic[hour] += 1 print_charts(hourdic, "Daily activity by hour") print() print_charts(weekdaydic, "Weekly activity by day", True) print()
def _get_php_date(format, time): # http://php.net/manual/en/datetime.formats.date.php # http://strftime.org/ # adapted from http://brandonwamboldt.ca/python-php-date-class-335/ _self = Contemplate time = datetime.datetime.fromtimestamp(time) timeStr = '' replacements = {} """ Day """ replacements['d'] = str( time.day ).zfill(2) replacements['D'] = calendar.day_abbr[ time.weekday() ] replacements['j'] = str( time.day ) replacements['l'] = calendar.day_name[ time.weekday() ] replacements['S'] = _self._get_ordinal_suffix( time.day ) replacements['w'] = str( time.weekday() ) replacements['z'] = str( time.timetuple().tm_yday ) """ Week """ replacements['W'] = str( time.isocalendar()[1] ) """ Month """ replacements['F'] = calendar.month_name[ time.month ] replacements['m'] = str( time.month ).zfill(2) replacements['M'] = calendar.month_abbr[ time.month ] replacements['n'] = str( time.month ) replacements['t'] = str( calendar.monthrange(time.year, time.month)[1] ) """ Year """ replacements['L'] = str(int( calendar.isleap(time.year) )) replacements['Y'] = str( time.year ) replacements['y'] = str( time.year )[2:] """ Time """ replacements['a'] = time.strftime("%p").lower() replacements['A'] = time.strftime("%p") replacements['g'] = str( int(time.strftime("%I")) ) replacements['G'] = str( int(time.strftime("%H")) ) replacements['h'] = time.strftime("%I") replacements['H'] = time.strftime("%H") replacements['i'] = str( time.minute ).zfill(2) replacements['s'] = str( time.second ).zfill(2) replacements['u'] = str( time.microsecond ) """ Timezone """ replacements['e'] = "" #_self.get_timezone() replacements['I'] = str( time.dst() ) for regex, replace in replacements.items(): format = format.replace(regex, replace) return format
def get_time(self, time, info=True): week = self.__dict_week_num[time.weekday()] writableh = time.hour shitatu = False if writableh > 0 and writableh < 5: hour = 5 writableh = 5 shitatu = True elif writableh == 0: hour = 19 else: hour = writableh - 5 for i in range(len(self.__file[week][hour])): num = int(self.__file[week][hour][i][2:]) if i == 0: if time.minute < num or shitatu == True: infotext = self.__return_info( info, self.__file[week][hour][i]) if info: return datetime.datetime(time.year, time.month, time.day, writableh, num), infotext else: return datetime.datetime(time.year, time.month, time.day, writableh, num) else: if i == (len(self.__file[week][hour])-1): if time.minute >= num: if hour != 19: ret = int(self.__file[week][hour + 1][0][2:]) infotext = self.__return_info( info, self.__file[week][hour + 1][0]) if writableh + 1 > 23: day = time.day + 1 return datetime.datetime(time.year, time.month, day, (writableh + 1) % 24, ret), infotext else: return datetime.datetime(time.year, time.month, time.day, writableh+1, ret), infotext else: week = ((time.weekday() + 1) % 7) week = self.__dict_week_num[week] ret = int( self.__file[week][0][0][2:]) infotext = self.__return_info( info, self.__file[week][0][0]) day = time.day + 1 return datetime.datetime(time.year, time.month, day, 5, ret), infotext before = int(self.__file[week][hour][i-1][2:]) if time.minute < num and time.minute >= before: infotext = self.__return_info( info, self.__file[week][hour][i]) return datetime.datetime(time.year, time.month, time.day, writableh, num), infotext
def get_next_change_text(self): if self.mode != TimerConfig.MODE_AUTO: return "Timer is forced to %s, change setting below" % (self.get_powered()) time, s = self.get_next_transitions()[0] state = s.name hr = time.hour mins = time.minute d = calendar.day_abbr[time.weekday()] if time.weekday() != datetime.date.today().weekday(): day_suffix = " on %s" % (d) else: day_suffix = "" return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
def get_next_change_text(timer_addr): if timer_addr not in __config["timers"]: return "" time, s = __config["timers"][timer_addr].get_next_transitions()[0] state = s.name hr = time.hour mins = time.minute d = calendar.day_abbr[time.weekday()] if time.weekday() != datetime.date.today().weekday(): day_suffix = " on %s" % (d) else: day_suffix = "" return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
def get_next_change_text(timer_addr): if timer_addr not in __config["timers"]: return "" time, s = __config["timers"][timer_addr].get_next_transitions()[0] state = {ON:'ON', OFF:'OFF'}[s] hr = time.hour mins = time.minute d = calendar.day_abbr[time.weekday()] if time.weekday() != datetime.date.today().weekday(): day_suffix = " on %s" % (d) else: day_suffix = "" return "Timer will turn %s at %s:%s%s" % (state, hr, mins, day_suffix)
def get_date_pripara_prpr(time): # first threshold - on wednesday if parse('wed').weekday() == time.weekday(): if time.time() < parse('21:00').time(): delta = 4 else: delta = 0 # second threshold - on saturday if parse('sat').weekday() == time.weekday(): if time.time() < parse('21:00').time(): delta = 3 else: delta = 0 # first span - from thu to fri if parse('wed').weekday() < time.weekday() < parse('sat').weekday(): delta = time.weekday() - parse('wed').weekday() # second span - from sun to tue if parse('sat').weekday() < time.weekday(): delta = time.weekday() - parse('sat').weekday() elif time.weekday() < parse('wed').weekday(): delta = time.weekday() + 2 date = time.replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=None) date -= datetime.timedelta(days=delta) return date
def get_weekly(number): db = pymysql.connect("dbike.cerj203fcxcq.eu-west-1.rds.amazonaws.com", "yuhao", "qwert2008", "dbike") cursor = db.cursor() sql = "SELECT * FROM dbike.daily_data where `number` = " + str( number) + " group by last_update;" cursor.execute(sql) db.commit() data = cursor.fetchall() cursor.close() length = len(data) dic_stand = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []} dic_bike = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []} dic = {'0': [], '1': [], '2': [], '3': [], '4': [], '5': [], '6': []} i = 0 while i < length: time = data[i][4] available_bike_stands = data[i][2] available_bikes = data[i][3] week = time.weekday() dic_stand[str(week)].append(available_bike_stands) dic_bike[str(week)].append(available_bikes) i = i + 1 for i in range(0, 7): dic_stand[str(i)] = Get_Average(dic_stand[str(i)]) #print(dic_stand[str(i)]) dic_bike[str(i)] = Get_Average(dic_bike[str(i)]) #print(dic_bike[str(i)]) dic[str(i)] = [dic_stand[str(i)], dic_bike[str(i)]] return jsonify(dic)
def find_trip(time, stop_id, route_id, direction): """finds trips according to specified parameters that were supposed to depart within the last 120 mins of timestamp according to schedule.""" time = datetime.datetime.fromtimestamp(time) weekday = time.weekday() if weekday < 5: service_id = "y1002" elif weekday == 5: service_id = "y1001" else: service_id = "y1003" midnight = time.replace(hour=0, minute=0, second=0, microsecond=0) timestamp = time-midnight result = db.session.query(GTFS_times, GTFS_trips).filter((GTFS_times.stop_id == stop_id) & (GTFS_times.dep <= (timestamp.seconds+20*60)) & (GTFS_times.dep >= (timestamp.seconds-1*60*60))).join( GTFS_trips, (GTFS_times.trip_id == GTFS_trips.trip_id) & (GTFS_trips.route_id == route_id) & (GTFS_trips.direction == direction) & (GTFS_trips.service_id == service_id)).order_by(GTFS_times.dep.desc()) response = [] for times, trips in result: response.append({ "trip_id": times.trip_id, "stop_id": times.stop_id, "start_time": times.start, "dep_time": times.dep, "duration": times.cum_dur, "route_id": trips.route_id, "direction": trips.direction, "progr_number":times.progr_number }) return response
def analyze_data(self): """ Calc heating rate Calc probability of occupancy """ conn = mdb.connect(CONN_PARAMS[0],CONN_PARAMS[1],CONN_PARAMS[2],CONN_PARAMS[3],port=CONN_PARAMS[4]) cursor = conn.cursor() cursor.execute("SELECT * FROM SensorData") sensor_data = cursor.fetchall() cursor.close() id, time_list, z, location, temp, b, c, occupancy_list = zip(*sensor_data) self.calc_heat_rate() # Determine the probability that the building will be occupied during # each hour of the current day. # Look at last 10 occurances of the current day. # If at any point during an hour, the space is occupied, then space is occupied for that hour # Probability is n_occupied / 10 # Return tuple ((hr, probability), ...) today = datetime.datetime.today().weekday() hours = np.arange(0,23) P_occupied = (0,0) self.pred_time_occupied = 1 for time, occupied in zip(time_list, occupancy_list): dow = time.weekday() if today == dow: # Look only at today hour = time.strftime('%H') for hr in hours: if hr == int(hour): pass return
def get_ddhhmm(self, custom = False): if not custom: time = datetime.datetime.now() else: time = custom ddhhmm = str(time.weekday()).zfill(2) + str(time.strftime("%H")).zfill(2) + str(time.strftime("%M")).zfill(2) return ddhhmm
def reminder_time(input): global next_func next_func = None time = datetime.datetime.today() words, has_nums = parse_to_nums(input.lower().split()) day_identifier = [i for i in words if i in weekdays] if "after tomorrow" in input.lower(): time = time + datetime.timedelta(days=2) elif 'tomorrow' in words: time = time + datetime.timedelta(days=1) elif day_identifier: day = weekdays.index(day_identifier[0]) print day time = time + datetime.timedelta(days=(day - time.weekday()) % 7) hour = [i for i in words if i in times] if hour: time = time.replace(hour=times[hour[0]], minute=0, second=0, microsecond=0) hour = False minute = 0 pmam = False bell = False for i in words: if hasattr(i, '__int__'): if type(hour) == bool and not hour: hour = i elif not minute: minute = i if i in bells: bell = True minute = bells[i] elif bell: if i in ['as', 'past', 'after']: pass elif i in ['to', 'told', 'til', 'till', 'of']: minute = -minute bell = False elif pmam: if i == 'm.': if pmam == 'pm': hour = hour % 12 + 12 elif pmam == 'am': hour = hour % 12 pmam = False elif i in ['p.', 'a.']: pmam = {'p.': 'pm', 'a.': 'am'}[i] if minute < 0: hour = (hour - 1) % 24 minute = 60 + minute if type(hour) == bool: hour = time.hour tf = tempfile.NamedTemporaryFile() tf.write('espeak "' + input + '"') time = time.replace(hour=hour, minute=minute, second=0, microsecond=0) os.system('at -t ' + time.strftime('%Y%m%d%H%M') + ' -f ' + tf.name) return str(time), None
def _initialize_hour(self, model: Process, time: datetime, first_hour: float = None, last_hour: float = None) -> None: arrival_rate = model.get_arrival_rate(DAYS[time.weekday()], time.hour) arrivals = sorted( [timedelta(minutes=randint(0, 59)) for i in range(arrival_rate)]) for item in arrivals: if (first_hour is None and last_hour is None) or ( first_hour is not None and item.total_seconds() >= (3600 - first_hour)) or (last_hour is not None and item.total_seconds() <= last_hour): instance = model.new() self.pending_merges[instance.process_id].update( {instance.process_instance_id: dict()}) for data in instance.process_reference.data_objects: self.dm.create_instance(data.id, instance.process_id, instance.process_instance_id) self.running_processes[instance.process_id][ instance.process_instance_id] = instance act = instance.process_reference.get_first_activity()[0] self.execution_queue.push( QueueItem(instance, act.id, instance.get_element_instance_id(act.id), time + item, act)) # START activity by Ran's request - not included by design, removal recommended self.log_queue.push( LogItem(time + item, instance.process_id, instance.process_instance_id, 'START', 0, 'end_activity'))
def construct_snapshots(): print("Constructing snapshots.") jams_df = pd.read_csv("data/jams.csv") states = {} for i, r in jams_df.iterrows(): if i % 5000 == 0: print("{} of {}".format(i, len(jams_df['street']))) time = datetime.fromtimestamp(r['pub_millis'] / 1000) hour = time.hour day_of_week = time.weekday() weather = weather_dict[(time.date(), hour)] path = literal_eval(r['line']) key = (time.date(), time.hour) if key not in states: states[key] = [0] * array_len covered_path = cover_path(path) for s in covered_path: # we are just going to throw out our data that didn't get caught by our grid # sorry :( # this is a tiny part (~0.5%) of the data anyways if s in streets: states[key][streets[s]] = 1 print("Done constructing snapshots.") return states
def load_pomodoros(self): # pomodoro = [idx,task,locations,shape,color,time] self.level = self.switcher.values[2][1] self.pomodoros = [[[] for slots in range(len(config.TIME_SLOT) + 1)] for days in range(7)] self.legend = {} for idx, time, task in self.data: slotnr = self.in_slot(time) if slotnr < 0: slotnr = len(config.TIME_SLOT_SEC) daynr = time.weekday() shape = self.get_shape(task) task_level = self.get_task_level(task) color = globals.database.colors[task_level][self.level] self.pomodoros[daynr][slotnr].append([idx, task, [0, 0], shape, color, time]) for daynr in range(7): for slotnr in range(len(self.pomodoros[daynr])): try: self.pomodoros[daynr][slotnr] = sorted(self.pomodoros[daynr][slotnr], key=lambda x: x[5]) except: pass self.load_size() self.load_locations()
def generate_yaml(out=False): yaml = open('cron.yaml', 'r') start = '' for line in yaml: start += line if line.startswith('# TASKS'): break yaml.close() if not start: start = 'cron:\n' next = datetime.timedelta(minutes=every_minute) time = datetime.datetime(year=datetime.datetime.utcnow().year, month=1, day=4) time = time + datetime.timedelta(days=-time.weekday()) yaml = '' for source, info in tasks: when = info['schedule'] for name, _ in info['urls']: tstr = when % time.strftime('%H:%M').lower() item = "- description: crawl for %(source)s/%(name)s\n" item += " url: /tasks/crawl?source=%(source)s&name=%(name)s\n" item += " schedule: %(when)s\n" yaml += (item % {'source':source, 'name':name, 'when':tstr}) time += next yaml = start + yaml if out: print yaml return yaml
def load_data_for_xgboost_from_mysql(table_name): """ 从数据库为xgboost模型读取数据,并进行时间格式转换 :param table_name: 要读取的表名 :return: """ db = connectdb() np_array = np.array(query_datas(db, table_name = table_name)) # 删除id列 np_array = np.delete(np_array, 0, axis = 1) # 获取时间列 time_array = np_array[:, 0] # 删除时间列 np_array = np.delete(np_array, 0, axis = 1) hour = [] minute = [] week = [] for time in time_array: hour.append(time.hour) minute.append(time.minute) week.append(time.weekday()) np_array = np.insert(np_array, 0, values = minute, axis = 1) np_array = np.insert(np_array, 0, values = hour, axis = 1) np_array = np.insert(np_array, 0, values = week, axis = 1) closedb(db) # 此时返回的属性分别是 week, hour, minute, kpi_1... kpi_n,label return np_array
def send_calendar_updates(): time = datetime.datetime.now() if time.hour == calendar_publish_hour and time.minute == calendar_publish_minute: content = parse_calendar_updates() if activeCalendarContent or (time.weekday() == 1 and content != ""): for chat in calendar_chats: sendMessage(chat, content) Timer(60.0, send_calendar_updates).start()
def checkLogInfo(self, log_info): action = int(log_info['state']) #'0': logout, '1': login name = log_info['name'] id = int(id_dict[name]) time = datetime.datetime.strptime(log_info['time'], '%Y-%m-%d %H:%M') info = '' flag = False if self.state_in[id] is 0 and action is 0: info = '【签出失败】您尚未登入' return [info, flag] elif self.state_in[id] is 1 and action is 1: info = '【签到失败】您尚未登出' return [info, flag] elif self.state_in[id] is 0 and action is 1: if self.last_login[id] > time: info = '【签到失败】签入时间在签出时间之前' elif time - datetime.datetime.now() >= datetime.timedelta( 0, 3600): #登入时间超出当前时间一小时 info = '【签到失败】签入时间超出当前时间1小时' else: self.last_login[id] = time self.state_in[id] = 1 weekday = time.weekday() if self.online_time[weekday][id] == datetime.timedelta(0): info = '夏天来了,期末还会远吗~您刚开始沉迷学习,加油' else: info = '您今日沉迷学习时间为:' + str(self.online_time[weekday][id]) flag = True return [info, flag] elif self.state_in[id] is 1 and action is 0: if self.last_login[id] > time: info = '【签出失败】签出时间在签入时间之前' elif time - datetime.datetime.now() >= datetime.timedelta(0, 3600): info = '【签出失败】签出时间超出当前时间1小时' else: self.state_in[id] = 0 duration = time - self.last_login[id] weekday = time.weekday() self.online_time[weekday][ id] = self.online_time[weekday][id] + duration #online_time_sum[id] = online_time_sum[id] + duration info = '本次学习时间为:' + str(duration) + '\n今日沉迷学习时间为:' + str( self.online_time[weekday][id]) flag = True return [info, flag]
def reminder_time(input): global next_func next_func = None time = datetime.datetime.today() words, has_nums = parse_to_nums(input.lower().split()) day_identifier = [i for i in words if i in weekdays] if "after tomorrow" in input.lower(): time = time+datetime.timedelta(days=2) elif 'tomorrow' in words: time = time+datetime.timedelta(days=1) elif day_identifier: day = weekdays.index(day_identifier[0]) print day time = time+datetime.timedelta(days=(day-time.weekday())%7) hour = [i for i in words if i in times] if hour: time = time.replace(hour=times[hour[0]],minute=0,second=0,microsecond=0) hour = False minute = 0 pmam = False bell = False for i in words: if hasattr(i, '__int__'): if type(hour)==bool and not hour: hour = i elif not minute: minute = i if i in bells: bell = True minute = bells[i] elif bell: if i in ['as', 'past', 'after']: pass elif i in ['to', 'told', 'til', 'till', 'of']: minute = -minute bell = False elif pmam: if i=='m.': if pmam=='pm': hour = hour%12+12 elif pmam=='am': hour = hour%12 pmam = False elif i in ['p.', 'a.']: pmam = {'p.':'pm','a.':'am'}[i] if minute<0: hour=(hour-1)%24 minute = 60+minute if type(hour)==bool: hour = time.hour tf = tempfile.NamedTemporaryFile() tf.write('espeak "'+input+'"') time = time.replace(hour=hour,minute=minute,second=0,microsecond=0) os.system('at -t '+time.strftime('%Y%m%d%H%M')+' -f '+tf.name) return str(time), None
def show_dispatch_time(self): print('<< dispatch schedule >>') if self.number == 0: print('None') return for x in range(self.number): time = datetime.datetime.fromtimestamp(self.dispatch_seconds[x]) print( '%s, %s' % (time.strftime('%Y/%m/%d -- %H:%M:%S'), days[time.weekday()]))
def make_log_table_lastweek(users, thisweek): output_files = {} connection = MySQLdb.connect(host='localhost', user='******', passwd=config.DB_PASSWD, db=config.DB_NAME, charset='utf8mb4') cursor = connection.cursor() if thisweek == True: today = datetime.today().replace( hour=0, minute=0, second=0, microsecond=0) + timedelta(days=7) else: today = datetime.today().replace(hour=0, minute=0, second=0, microsecond=0) from_time = today - relativedelta(weeks=1) - timedelta( days=today.weekday()) to_time = today - timedelta(days=today.weekday()) query = "" logging.info(type(users)) if users == []: query = f"SELECT u.name, l.log_time FROM logData l INNER JOIN user u ON u.id = l.user_id WHERE u.enable = true AND l.log_time >= '{from_time.strftime('%Y-%m-%d %H:%M:%S')}' AND l.log_time < '{to_time.strftime('%Y-%m-%d %H:%M:%S')}' ORDER BY u.name, l.log_time" else: query = f"SELECT u.name, l.log_time FROM logData l INNER JOIN user u ON u.id = l.user_id WHERE u.enable = true AND u.name IN " + str( users ).replace('[', '(').replace( ']', ')' ) + f" AND l.log_time >= '{from_time.strftime('%Y-%m-%d %H:%M:%S')}' AND l.log_time < '{to_time.strftime('%Y-%m-%d %H:%M:%S')}' ORDER BY u.name, l.log_time" MySQLdb.escape_string(query) logging.info(query) count = cursor.execute(query) log_dict = {} # {user_name: [log_time,...]} if count > 0: rows = cursor.fetchall() for row in rows: if row[0] not in log_dict: log_dict[row[0]] = [] log_dict[row[0]].append(row[1]) else: return {} for user_name, log_times in log_dict.items(): log_array = numpy.zeros( (int(24 / TIME_SPAN), 7, 3) ) # [[0:00-6:00, 6:00-12:00, 12:00-18:00, 18:00-24:00], ...] # len: 7 for time in log_times: hour = int(time.strftime('%H')) log_array[int(hour / TIME_SPAN)][time.weekday()] += 1 title = f"{user_name} ({from_time.strftime('%Y/%m/%d')}-{(to_time - timedelta(days=1)).strftime('%Y/%m/%d')})" filepath = make_table.make_table_oneweek(log_array, user_name, TIME_SPAN, title) if len(filepath) != 0: output_files[user_name] = filepath return output_files
def get_day_shortname(time): today = datetime.utcnow().date() if time.date() == today: return 't' yesterday = today - timedelta(days=1) if time.date() == yesterday: return 'y' weekday = DAY_NAMES[time.weekday()] return weekday
def should_go_off(self, time): """ Returns whether this alarm should go off on the given time. Alarm -> datetime -> bool """ if self.hour == time.hour and self.minute == time.minute: if self.repeat == self.EVERY_WEEK or self.repeat == self.NO_REPEAT: return self.weekday == time.weekday() return True return False
def read_time(self, name): """ Based on user input, checks the time of a user if their timezone is set. """ #Preventing spaces from being included in the 'name' name = name.replace(' ','') #Load timezone information into 'data' f = open(self.dpl,'rb') data = pickle.load(f) f.close() #Making sure that nick does not contain invalid characters if len(name) == 0: return 'Error: Please enter a user\'s name.' if not re.match("^[A-Za-z0-9_\\\[\]{}^`|-]*$", name): return 'Error: Improper character(s) input.' # Fix all characters that might break regex. name = name.replace('[', '\[') name = name.replace(']', '\]') name = name.replace('^', '\^') name = name.replace('\\', "\\") checktext = '\S*' + name + '\S*' check = re.compile(checktext, re.IGNORECASE) #Begin search for nick found = False for user in data['usertimezones'].keys(): if check.match(user): found = True timezone = data['usertimezones'][user] time = datetime.datetime.utcnow() + datetime.timedelta(hours=timezone) weekday = days[time.weekday()] #These ensure that the time format comes out as 09:05 #instead of 9:5 if time.hour < 10: hour_zero = str(0) else: hour_zero = '' if time.minute < 10: minute_zero = str(0) else: minute_zero = '' #This ensures that names ending with 's' get an apostrophe #and names that do not will get 's if user[-1] == 's': user = str(user) + '\'' else: user = str(user) + '\'s' return 'It is currently '+weekday+' '+hour_zero+str(time.hour)+':'+minute_zero+str(time.minute)+' in '+user+' time zone.' if found == False: return 'Either this person has not registered, or such person does not exist.'
def headerTimes(trainsData): #turns the date/time information into numbers that machine learning tools can use import pandas as pd headerInfo=pd.DataFrame(0,index=trainsData.index,columns=['secSince5','weekday','evening']) for time in trainsData.index: headerInfo.loc[time,'weekday']=time.weekday() if time.hour>11: #if it's past 11 headerInfo.loc[time,'evening']=1 #set evening to 1 headerInfo.loc[time,'secSince5']=(time-pd.to_datetime('2016-'+str(time.month)+'-'+str(time.day)+' 17:00')).seconds #set secSince5 to seconds since 5pm else: headerInfo.loc[time,'secSince5']=(time-pd.to_datetime('2016-'+str(time.month)+'-'+str(time.day)+' 5:00')).seconds #set secSince5 to seconds since 5am return headerInfo
def makeDeparture(time): departs=Departure.objects.filter() for departure in departs: if departure.time.weekday() == time.weekday() and departure.time.time() == time.time(): return departure depart= Departure(time=time) depart.save() return depart
def is_eqmktopen(self, time): second = (time.timestamp() + 8 * 3600) % 86400 if time.weekday() < 5: if second < 3600: return True if second >= 33600 and second < 43200: return True if second >= 46800 and second < 59700: return True if second >= 62100: return True return False
def choose_time_interval(self, datetimes, time): """ Choose the time interval into which the given time falls in. """ next_hour = datetime.datetime(time.year,time.month,time.day,time.hour) next_hour += datetime.timedelta(hours=1) time_left = (next_hour - time).seconds for datetime_ in datetimes: if datetime_['days'][time.weekday()] == ' ': continue if datetime_['hours'][time.hour] == ' ': continue return datetime_,time_left
def is_bedtime(time): # Check for Friday or Saturday if time.weekday() in [4, 5]: # Is it past 11 pm and before 4 am if time.hour >= 23 or time.hour <= 4: return True else: # Is it past 9:30 pm and before 4 am if time.hour > 21 or (time.hour == 21 and time.minute >= 30) or time.hour <= 4: return True # It is not bedtime return False
def _win_set_time(offset): import win32api time = calculate_time(offset) year = int(time.year) month = int(time.month) # Return the day of the week as an integer, where Monday is 0 and Sunday is 6. dayOfWeek = int(time.weekday()) day = int(time.day) hour = int(time.hour) minute = int(time.minute) second = int(time.second) millseconds = int((time.microsecond)/1000) win32api.SetSystemTime(year,month,dayOfWeek,day,hour,minute,second,millseconds)
def formatTime(inTime): time = datetime.fromtimestamp(float(inTime)) dateStr = time.strftime("%Y-%m-%d %H:%M") if date.fromtimestamp(float(inTime)) == date.today(): dateStr = "%02d:%02d" % (time.hour, time.minute) elif date.fromtimestamp(float(inTime)) > (date.today() - timedelta(7)): dateStr = "%s %02d:%02d" % ( ("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")[time.weekday()], time.hour, time.minute, ) return dateStr
def removeInWeekOrNeighborWeek(x): _list=x[1] # remove login time ==1 if len(_list)==1: return False # weekday=[] _dict={} #week,weekday_list for item in _list: time= datetime.datetime.fromtimestamp(int(int(item)/1000)) # weekday.append((time.isocalendar()[1],time.weekday())) weekIndex=time.isocalendar()[1] weekDayIndex=time.weekday() if _dict.get(weekIndex)!=None: listByWeek=_dict[weekIndex] listByWeek.append(weekDayIndex) else: _dict[weekIndex]=[weekDayIndex] # check week neighbor # distinct list in dict for key in _dict: _dict[key]=list(set(_dict[key])) # print key ,_dict # print(x[0]) # print(_dict) # key to num for iterator neighbor week check weekNum=[] for key in _dict: weekNum.append(key) weekNum=sorted(weekNum) index=0 for num in weekNum: try: # print "in for loop:"+str((weekNum[index])+weekNum[index+2])+"=="+str(weekNum[index+1]) # print(index) if (weekNum[index] + weekNum[index+2])==weekNum[index+1]*2: # if weekNum[index+1] + weekNum[index+2]==weekNum[index]+weekNum[index+3]: # print("yes") return False break except: pass # check logintime in one week if gt 3 if len(_dict[num])>3: return False break index=index+1 return True
def t_scheduler(self): time = datetime.datetime.now() if (not self.i_check_time_unit(self.minute, time.minute) or not self.i_check_time_unit(self.hour, time.hour) or not self.i_check_time_unit(self.day_of_week, time.weekday() + 1) or not self.i_check_time_unit(self.day_of_month, time.day) or not self.i_check_time_unit(self.month, time.month) or not self.i_check_time_unit(self.year, time.year)): self.i_recall_timer() return super().t_scheduler()
def timeRank(self, check_info): online_time_sum = [ datetime.timedelta(0) for i in range(self.memberNum) ] totalseconds = [0 for i in range(self.memberNum)] name = check_info['name'] id = int(id_dict[name]) time = datetime.datetime.strptime(check_info['time'], '%Y-%m-%d %H:%M') for i in range(self.memberNum): duration = (time - self.last_login[i]) * self.state_in[i] weekday = time.weekday() for j in range(weekday + 1): online_time_sum[ i] = online_time_sum[i] + self.online_time[j][i] online_time_sum[i] = online_time_sum[i] + duration totalseconds[i] = online_time_sum[i].total_seconds() name_list = [ '徐凯源', '宋绍铭', '刘 洋', '韩纪飞', '高佳琦', '郭东旭', '张若冰', '韩晓霏', '于 超', '林声远', '鸡器人', '厉丹阳', '王佳林', '韦 洁', '陈佳宁' ] name_list_eng = [ 'xky', 'ssm', 'ly', 'hjf', 'gjq', 'gdx', 'zrb', 'hxf', 'yc', 'lsy', 'test', 'ldy', 'wjl', 'wj', 'cjn' ] lists = zip(totalseconds, online_time_sum, name_list, name_list_eng) lists.sort(key=lambda x: x[0], reverse=True) msg = '本周目前排名:\n' rank = 0 for i in range(self.memberNum): rkstr = ' %d' % (i + 1) # rank string if len(rkstr) < 4: # add two (half-width) space for alignment rkstr = ' ' + rkstr hrstr = '%2.1f' % (lists[i][0] / 3600.0) # hour string if len(hrstr) < 4: # add four (half-width) space for alignment hrstr = ' ' + hrstr elif len(hrstr) < 5: # add two (half-width) space for alignment hrstr = ' ' + hrstr msg = msg + rkstr + ' | ' + lists[i][2] + ' ' + hrstr + ' 小时\n' if lists[i][3] == name: rank = i + 1 if rank != 0: names = lists[rank - 1][2].replace( ' ', '') # omit the full-width space '\xa1\xa1' # splitline = '——————————\n' # split line (caution: display varies with PC and phone) msg = msg + names + "的目前排名:" + (str)(rank) return msg
def nameofdayweek(n): names = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] time = datetime.datetime.now() wkd = time.weekday() if n == "nsd": #Next school day if wkd > 4: wkd = 0 else: wkd = wkd + int(n) if wkd > 6: wkd = wkd - 7 log.debug("Day of week: " + names[wkd]) try: return names[wkd] except: return "Can't return more days than 8"
def timeSum(self, check_info): name = check_info['name'] id = int(id_dict[name]) time = datetime.datetime.strptime(check_info['time'], '%Y-%m-%d %H:%M') duration = (time - self.last_login[id]) * self.state_in[id] # if self.state_in[id] is 1: # duration = time - self.last_login[id] # else: # duration = datetime.timedelta(0) weekday = time.weekday() sum_time = datetime.timedelta(0) for i in range(weekday + 1): sum_time = sum_time + self.online_time[i][id] sum_time = sum_time + duration msg = name + '本周在线总时间为:' + str(sum_time) return msg
def get_time_packet(self, time): """ Prepares a time packet according to passed datetime """ assert isinstance(time, datetime) packet = bytearray() packet.append(0x0F) packet.append(0xFB) packet.append(0x00) packet.append(0x04) packet.append(0xD8) packet.append(time.weekday()) packet.append(time.hour) packet.append(time.minute) packet.append(PacketParser.checksum(packet)) packet.append(0x04) return packet
def bin_dates(type_id): #assumes all bins have been created already global hourly_bucket global two_category_buckets global to_be_binned # add dates to buckets if to_be_binned: prevIndex = hoursSince2006(to_be_binned[0]) for time in to_be_binned: two_category_buckets[(time.hour, time.weekday())].append(time) # ie, if the desired element not in the hourly bucket array index if hoursSince2006(time) >= len(hourly_bucket): counter = prevIndex + 1 # this is code to deal with empty time periods while counter < hoursSince2006(time): # hourly_bucket[counter].append([]) # counter += 1 hourly_bucket.append([time]) # desired element in the hourly bucket array index but currently # an empty array elif not hourly_bucket[hoursSince2006(time)]: counter = prevIndex + 1 # this is code to deal with empty time periods while counter < hoursSince2006(time): # hourly_bucket[counter] = [] # counter += 1 hourly_bucket[hoursSince2006(time)] = [time] # desired element in the hourly bucket array index and # there are some items there else: hourly_bucket[hoursSince2006(time)].append(time) prevIndex = hoursSince2006(time) if type_id == 1: return two_category_buckets elif type_id == 2: myDict = {str(i): hourly_bucket[i] for i in enumerate(hourly_bucket)} return myDict
def previous_weekday(cls, time, weekday): days = time.weekday() - weekday if days > 0: days -= 8 new = time + datetime.timedelta(days=days) return Time(datetime.datetime(new.year, new.month, new.day))
import smtplib import time, datetime from email.mime.text import MIMEText import conf import gmail_credentials SECOND= 1 MINUTE= 60*SECOND HOUR= 60*MINUTE while True: time=datetime.datetime.utcfromtimestamp(time.time()) #we check at 4am on Wednesday because time is UTC!! if (time.weekday()==3 and time.hour==4): # Open a plain text file for reading. For this example, assume that # the text file contains only ASCII characters. textfile= "email.txt" fp = open(textfile, 'rb') # Create a text/plain message msg = MIMEText(fp.read()) fp.close() sender = conf.sender receivers = conf.receivers msg['Subject'] = 'Reminder from Trashy, the trash robot' msg['From'] = sender msg['To'] = receivers
def filterOldBackups( backupdirs ):#{{{ #Start by assuming all backup folders will be kept folder2Delete = dict([(f,False) for f in backupdirs]) time2Folder = dict([(convertBackupFolderToDate(f), f) for f in backupdirs]) times = time2Folder.keys() times.sort() times.reverse() now = datetime.datetime.now() #Only one backup per month, if older than a three months threeMonthsWeekAgo = now - datetime.timedelta(90) currentMonthStart = None currentMonthEnd = None for time in times: #Ignore if we are already deleted if folder2Delete[ time2Folder[time] ]: continue if time < threeMonthsWeekAgo:#Only check folders more than three months old folder = time2Folder[time] if currentMonthStart != None and time >= currentMonthStart and time <= currentMonthEnd: print "deleting because too many on month ", time folder2Delete[ folder ] = True else: currentMonthStart = datetime.datetime(time.year, time.month, 1) print 'currentMonthStart=', time print last_day_of_month(currentMonthStart) currentMonthEnd = datetime.datetime(currentMonthStart.year, currentMonthStart.month, last_day_of_month(currentMonthStart).day) #Only one backup per week, if older than a week oneWeekAgo = now - datetime.timedelta(7 + now.weekday()) currentWeekStart = None currentWeekEnd = None for time in times: #Ignore if we are already deleted if folder2Delete[ time2Folder[time] ]: continue if time < oneWeekAgo:#Only check folders more than a whole week old folder = time2Folder[time] if currentWeekStart != None and time >= currentWeekStart and time <= currentWeekEnd: folder2Delete[ folder ] = True else: currentWeekStart = datetime.datetime(time.year, time.month, time.day) - datetime.timedelta(time.weekday()) currentWeekEnd = datetime.datetime(currentWeekStart.year, currentWeekStart.month, currentWeekStart.day) + datetime.timedelta(6) oneDayAgo = now - datetime.timedelta(1) dayInTime = None #Only one backup per day, if older than a day for time in times: #Ignore if we are already deleted if folder2Delete[ time2Folder[time] ]: continue if time < oneDayAgo:#Make sure we are older than a day folder = time2Folder[time] coarseDay = datetime.datetime( time.year, time.month, time.day ) if not dayInTime or coarseDay != dayInTime: dayInTime = coarseDay else:#It's the same day, delete folder2Delete[ folder ] = True # for time in times: # print time, '\t\t', folder2Delete[time2Folder[time]], '\t', time.weekday() return [ f for f in backupdirs if folder2Delete[f] ]
currentDate = dateStart baseInt = hoursSince2000(dateStart) # initalize buckets two_category_buckets = {} hourly_bucket = [None] * (hoursSince2000(dateEnd) - baseInt) # good for analytics while currentDate < dateEnd: two_category_buckets[(currentDate.hour, currentDate.weekday())] = [] hourly_bucket[hoursSince2000(currentDate) - baseInt] = [] currentDate = currentDate + dt.timedelta(hours = 1) # add dates to buckets for time in times: two_category_buckets[(time.hour, time.weekday())].append(time) hourly_bucket[hoursSince2000(time) - baseInt].append(time) #print len(hourly_bucket[0]) #print len(hourly_bucket[1]) print "Type, Date 1 Last 24 Hours, Date 1 Last Hour, Date 2 Last 24 Hours, Date 2 Last Hour, Date 1 Index, Date 2 Index, Date 1 Year, Date 1 Month, Date 1 Day, Date 1 Hour, Date 1 Weekday, Date 2 Year, Date 2 Month, Date 2 Day, Date 2 Hour, Date 2 Weekday" #iterate through times for index in range(24,len(hourly_bucket)): sameWeekdayAndHour = [index2 for index2 in range(24,index) if index % 168 == index2 % 168] secondObjectNextHourCounter = 0 secondObjectLast24HoursCounter = 0 for index2 in sameWeekdayAndHour: firstObjectNextHour = len(hourly_bucket[index]) secondObjectNextHour = len(hourly_bucket[index2]) secondObjectNextHourCounter += secondObjectNextHour
def new_alarm(input): event = alarm.Event() event.appid = 'saera' event.message = 'Wake Up' time = datetime.datetime.today() words, has_nums = parse_to_nums(input.lower().split()) day_identifier = [i for i in words if i in weekdays] if "after tomorrow" in input.lower(): time = time+datetime.timedelta(days=2) elif 'tomorrow' in words: time = time+datetime.timedelta(days=1) elif day_identifier: day = weekdays.index(day_identifier[0]) print day time = time+datetime.timedelta(days=(day-time.weekday())%7) hour = [i for i in words if i in times] if hour: time = time.replace(hour=times[hour[0]],minute=0,second=0,microsecond=0) hour = False minute = 0 pmam = False bell = False for i in words: if hasattr(i, '__int__'): if type(hour)==bool and not hour: hour = i elif not minute: minute = i if i in bells: bell = True minute = bells[i] elif bell: if i in ['as', 'past', 'after']: pass elif i in ['to', 'told', 'til', 'till', 'of']: minute = -minute bell = False elif pmam: if i=='m.': if pmam=='pm': hour = hour%12+12 elif pmam=='am': hour = hour%12 pmam = False elif i in ['p.', 'a.']: pmam = {'p.':'pm','a.':'am'}[i] if minute<0: hour=(hour-1)%24 minute = 60+minute if type(hour)==bool: hour = time.hour time = time.replace(hour=hour,minute=minute,second=0,microsecond=0) event.alarm_time = float(time.strftime("%s")) action_stop, action_snooze = event.add_actions(2) action_stop.label = 'Stop' action_stop.flags |= alarm.ACTION_WHEN_RESPONDED | alarm.ACTION_TYPE_NOP action_snooze.label = 'Snooze' action_snooze.flags |= alarm.ACTION_WHEN_RESPONDED | alarm.ACTION_TYPE_SNOOZE print event.is_sane() cookie = alarm.add_event(event) return "Okay, I set your alarm for "+time.strftime("%I:%M %P"), None