def get_date_range(date: datetime = None, period: int = 6, unit: int = 1): """ 按指定日期、周期数、周期单位计算出各日期区间 :param date: 指定日期 :param period: 周期数 :param unit: 周期单位,支持 月=1,季=2,年=3 :return:日期区间,如: 传参是 date=<datetime: 2020-07-01>, period=2, unit=1, return: [(<datetime: 2020-07-01>, <datetime: 2020-07-31>, '2020-07'), (<datetime: 2020-06-01>, <datetime: 2020-06-30>, '2020-06')] """ periods = list() year = date is None and datetime.datetime.now().year or date.year month = date is None and datetime.datetime.now().month or date.month for n in range(int(period)): if unit == 1: _, day_num = calendar.monthrange(year, month) periods.append((datetime.datetime(year, month, 1), datetime.datetime(year, month, day_num), f'{year}-{month}')) year, month = calendar.prevmonth(year=year, month=month) elif unit == 2: first_day, last_day, date_str = get_quarter( date=datetime.date(year, month, 1)) periods.append((first_day, last_day, date_str)) year, month = calendar.prevmonth(year=first_day.year, month=first_day.month) elif unit == 3: periods.append((datetime.datetime(year, 1, 1), datetime.datetime(year, 12, 31), f'{year}年')) year -= 1 return periods[::-1]
def get_page(self): """ Get HTML-content from web-page and pass it further for downloading. """ main_url = 'https://www.smashingmagazine.com/' prev_year, prev_month = calendar.prevmonth(self.year, MONTHS[self.month]) url = f'{main_url}{prev_year}/{str(prev_month).zfill(2)}/desktop-wallpaper-calendars-{self.month}-{self.year}/' page = requests.get(url) if page.status_code == 200: print(page.status_code) self.download_content(page.content) else: print('No content found. Try another month and/or year.')
def get_past_range(self, date_range): if date_range: if date_range == "today": date = datetime.now().date() - timedelta(days=1) start_date = datetime.combine(date, time.min) end_date = datetime.combine(date, time.max) return start_date, end_date, "" elif date_range == "yesterday": date = datetime.now().date() - timedelta(days=2) start_date = datetime.combine(date, time.min) end_date = datetime.combine(date, time.max) return start_date, end_date, "" elif date_range == "7days": date = datetime.now().date() start_date = date - timedelta(days=13) end_date = date - timedelta(days=6) start_date = datetime.combine(start_date, time.min) end_date = datetime.combine(end_date, time.max) return start_date, end_date, "" elif date_range == "30days": date = datetime.now().date() start_date = date - timedelta(days=60) end_date = date - timedelta(days=30) start_date = datetime.combine(start_date, time.min) end_date = datetime.combine(end_date, time.max) return start_date, end_date, "" elif date_range == "last_month": date = datetime.now().date() date = date - timedelta(days=60) y, m = calendar.prevmonth(date.year, date.month) start_date = datetime(y, m, 1) end_date = datetime(y, m, calendar.monthlen(y, m)) end_date = datetime.combine(end_date, time.max) return start_date, end_date, "" else: try: start_date, end_date = self.parse_datetime(date_range) return start_date, end_date, "" except Exception as e: return "", "", create_error_response( {"Msg": "Invalid date range"}) else: start_date, end_date, error = self.get_default_date_range() return start_date, end_date, error
def swipe_month(self, previous=False): """ Implements the swipe mechanism :param previous: if True set month to previous, otherwise to the next :return: None """ day = datetime(month=self.current_month.get(), year=self.current_year.get(), day=1) month = calendar.prevmonth(month=day.month, year=day.year) \ if previous \ else calendar.nextmonth(month=day.month, year=day.year) self.current_year.set(month[0]) self.current_month.set(month[1]) self.clear_calendar() self.render_month(month=month[1], year=month[0])
def set_dates(self): start = self.driver.find_element_by_xpath( '//*[@id="ctl00_ctl00_ctl00_ctl00_CphFormBody_cphFormBody_cphRight_cphReport_DatePickerStart_txtTextBox"]' ) date1 = pd.to_datetime(start.get_attribute('defaultValue')) d2y, d2m = calendar.prevmonth(date1.year, date1.month) date2 = datetime.date(d2y, d2m, 1) startdate = str(date2.month) + '/' + str(date2.day) + '/' + str( date2.year) start.clear() start.send_keys(startdate) end = self.driver.find_element_by_xpath( '//*[@id="ctl00_ctl00_ctl00_ctl00_CphFormBody_cphFormBody_cphRight_cphReport_DatePickerEnd_txtTextBox"]' ) enddate = str(date2.month) + '/' + str( calendar.monthrange(date2.year, date2.month)[1]) + '/' + str( date2.year) end.clear() end.send_keys(enddate) return date2
def testDate(): # 获取年、月 this_year = datetime.now().year this_month = datetime.now().month date_list = [[ this_year, this_month, calendar.monthlen(this_year, this_month) ]] for i in range(5): year_month_days = list(calendar.prevmonth(this_year, this_month)) this_month = this_month - 1 if this_month <= 0: this_month = 12 this_year = this_year - 1 year_month_days.append(calendar.monthlen(this_year, this_month)) date_list.append(year_month_days) for date_tuple in date_list: if date_tuple[1] < 10: date_tuple[1] = "0" + str(date_tuple[1]) print(date_list)
# calendar.prmonth(year,month,w=2,l=1) import calendar print(calendar.prevmonth(2019, 6)) # (2019, 5)
2 """ print("##################### 4 #####################") print("monthlen:", calendar.monthlen(2018, 10)) print("monthlen:", calendar.monthlen(2018, 11)) print("monthlen:", calendar.monthlen(2018, 12)) """ output: monthlen: 31 monthlen: 30 monthlen: 31 """ print("##################### 5 #####################") print("prevmonth:", calendar.prevmonth(2018, 11)) print("nextmonth:", calendar.nextmonth(2018, 11)) """ output: prevmonth: (2018, 10) nextmonth: (2018, 12) """ print("##################### 6 #####################") print("monthrange:", calendar.monthrange(2018, 10)) print("monthrange:", calendar.monthrange(2018, 11)) print("monthrange:", calendar.monthrange(2018, 12)) """ output: monthrange: (0, 31) monthrange: (3, 30)
we will have import calender library this library .or module includes several function we take a look at few of them ''' #import calender module import calendar date = input("enter the date(dd/mm/year): ") day, month, year = date.split("/") day = int(day) month = int(month) year = int(year) #print("calender of month ", month, " of year ", year) print(calendar.month(year, month)) print("month length: ", calendar.monthlen(year, month)) print("next month: ", calendar.nextmonth(year, month)) print("previous month: ", calendar.prevmonth(year, month)) print("week day(week start from monday):", calendar.weekday(year, month, day)) ''' let's have a look at few more basic functions thank you for watching '''
def previous_month(self): '''Move back one month''' self.year, self.month = calendar.prevmonth(self.year, self.month) self.day = 1 self.populate_func()