python 日期函数
# -*- coding: utf-8 -*- import time import pandas import datetime import random from dateutil.relativedelta import relativedelta """ time """ def quarter(month: str): """ :param month: :return: """ if month in {"1", "2", "3"}: return "1" elif month in {"4", "5", "6"}: return "2" elif month in {"7", "8", "9"}: return "3" elif month in {"10", "11", "12"}: return "4" else: return "" def year_qua(date: str): """ :param date: :return: """ month = date[5:7] return [date[0:4], quarter(month)] def get_today(): """ :return: """ return str(datetime.datetime.today().date()) def get_year(): """ :return: """ return datetime.datetime.today().year def get_month(): """ :return: """ return datetime.datetime.today().month def get_hour(): """ :return: """ return datetime.datetime.today().hour def today_last_year(): """ :return: """ return str(datetime.datetime.today().date() - relativedelta(years=1)) def day_last_week(days=-7): """ :param days: :return: """ return str(datetime.datetime.today().date() + datetime.timedelta(days)) def day_last_date(date, days=-1): """ :param date: :param days: :return: """ last = datetime.datetime.strptime(date, "%Y-%m-%d") + datetime.timedelta(days) return str(last)[0:10] def get_now(): """ :return: """ return time.strftime("%Y-%m-%d %H:%M:%S") def int_time(timestamp): """ :param timestamp: :return: """ time_str = datetime.datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") return time_str def diff_day(start=None, end=None): """ :param start: :param end: :return: """ day_start = datetime.datetime.strptime(start, "%Y-%m-%d") day_end = datetime.datetime.strptime(end, "%Y-%m-%d") return (day_end - day_start).days def get_quarts(start: str, end: str): """ :param start: :param end: :return: """ idx = pandas.period_range( "Q".join(year_qua(start)), "Q".join(year_qua(end)), freq="Q-JAN" ) return [str(d).split("Q") for d in idx][::-1] def trade_cal(): """ :return: """ return pandas.read_csv("http://file.tushare.org/tsdata/calAll.csv") def is_holiday(date: str): """ :param date: :return: """ df = trade_cal() holiday = df[df.isOpen == 0]["calendarDate"].values today = "" if isinstance(date, str): today = datetime.datetime.strptime(date, "%Y-%m-%d") if today.isoweekday() in [6, 7] or str(date) in holiday: return True return False def last_today_date(): """ :return: """ today = int(datetime.datetime.today().date().strftime("%w")) if today == 0: return day_last_week(-2) return day_last_week(-1) def tt_dates(start="", end=""): """ :param start: :param end: :return: """ dates = [ d for d in range(int(start[0:4]), int(end[0:4]) + 1, 2) ] return dates def _random(n=13): """ :param n: :return: """ return str(random.randint(10 ** (n - 1), (10 ** n) - 1)) def get_q_date(year=None, quarter=None): """ :param year: :param quarter: :return: """ dt = { "1": "-03-31", "2": "-06-30", "3": "-09-30", "4": "-12-31" } return "%s%s" % (str(year), dt[str(quarter)])