def from_string(time_string): if CMN_FUNC.check_date_str_format(time_string): return FinanceDate.from_string(time_string) elif CMN_FUNC.check_month_str_format(time_string): return FinanceMonth.from_string(time_string) elif CMN_FUNC.check_quarter_str_format(time_string): return FinanceQuarter.from_string(time_string) else: ValueError("Unknown time format: %s" % time_string)
def __init__(self, *args): super(FinanceDate, self).__init__() self.month = None # range: 1 - 12 self.day = None # range: 1 - last date of month self.date_str = None self.datetime_cfg = None try: if len(args) == 1: time_cfg = None if isinstance(args[0], str): mobj = CMN_FUNC.check_date_str_format(args[0]) self.setup_year_value(mobj.group(1)) # self.year = mobj.group(1) self.month = int(mobj.group(2)) self.day = int(mobj.group(3)) elif isinstance(args[0], datetime): self.setup_year_value(args[0].year) # self.year = args[0].year self.month = args[0].month self.day = args[0].day else: raise elif len(args) == 3: for index in range(3): if type(args[index]) is not int: raise self.setup_year_value(args[0]) # self.year = args[0] self.month = args[1] self.day = args[2] else: raise except Exception: raise ValueError("Unknown argument in FormatDate format: %s" % args) # Check value range FinanceDate.check_value_range(self.year, self.month, self.day)