def test_build_date(self): datetuple = TupleBuilder.build_date() self.assertEqual(datetuple, (None, None, None, None, None, None, 'date')) datetuple = TupleBuilder.build_date(YYYY='1', MM='2', DD='3', Www='4', D='5', DDD='6') self.assertEqual(datetuple, ('1', '2', '3', '4', '5', '6', 'date'))
def test_build_date(self): datetuple = TupleBuilder.build_date() self.assertEqual(datetuple, (None, None, None, None, None, None, "date")) datetuple = TupleBuilder.build_date(YYYY="1", MM="2", DD="3", Www="4", D="5", DDD="6") self.assertEqual(datetuple, ("1", "2", "3", "4", "5", "6", "date"))
def _parse_interval_end(endstr, starttuple, datetimedelimiter): datestr = None timestr = None monthstr = None daystr = None concise = False if type(starttuple) is DateTuple: startdatetuple = starttuple else: #Start is a datetime startdatetuple = starttuple.date if datetimedelimiter in endstr: datestr, timestr = endstr.split(datetimedelimiter, 1) elif ':' in endstr: timestr = endstr else: datestr = endstr if timestr is not None: endtimetuple = parse_time(timestr, builder=TupleBuilder) #End is just a time if datestr is None: return endtimetuple #Handle backwards concise representation if datestr.count('-') == 1: monthstr, daystr = datestr.split('-') concise = True elif len(datestr) <= 2: daystr = datestr concise = True elif len(datestr) <= 4: monthstr = datestr[0:2] daystr = datestr[2:] concise = True if concise is True: concisedatestr = startdatetuple.YYYY #Separators required because concise elements may be missing digits if monthstr is not None: concisedatestr += '-' + monthstr elif startdatetuple.MM is not None: concisedatestr += '-' + startdatetuple.MM concisedatestr += '-' + daystr enddatetuple = parse_date(concisedatestr, builder=TupleBuilder) #Clear unsupplied components if monthstr is None: enddatetuple = TupleBuilder.build_date(DD=enddatetuple.DD) else: #Year not provided enddatetuple = TupleBuilder.build_date(MM=enddatetuple.MM, DD=enddatetuple.DD) else: enddatetuple = parse_date(datestr, builder=TupleBuilder) if timestr is None: return enddatetuple return TupleBuilder.build_datetime(enddatetuple, endtimetuple)