def test_build_datetime(self): testtuples = ( ( { "date": DateTuple("1", "2", "3", "4", "5", "6"), "time": TimeTuple("7", "8", "9", None), }, DatetimeTuple( DateTuple("1", "2", "3", "4", "5", "6"), TimeTuple("7", "8", "9", None), ), ), ( { "date": DateTuple("1", "2", "3", "4", "5", "6"), "time": TimeTuple( "7", "8", "9", TimezoneTuple(True, False, "10", "11", "tz name")), }, DatetimeTuple( DateTuple("1", "2", "3", "4", "5", "6"), TimeTuple( "7", "8", "9", TimezoneTuple(True, False, "10", "11", "tz name")), ), ), ) for testtuple in testtuples: self.assertEqual(TupleBuilder.build_datetime(**testtuple[0]), testtuple[1])
def test_build_datetime(self): testtuples = (({ 'date': DateTuple('1', '2', '3', '4', '5', '6'), 'time': TimeTuple('7', '8', '9', None) }, DatetimeTuple(DateTuple('1', '2', '3', '4', '5', '6'), TimeTuple('7', '8', '9', None))), ({ 'date': DateTuple('1', '2', '3', '4', '5', '6'), 'time': TimeTuple( '7', '8', '9', TimezoneTuple(True, False, '10', '11', 'tz name')) }, DatetimeTuple( DateTuple('1', '2', '3', '4', '5', '6'), TimeTuple( '7', '8', '9', TimezoneTuple(True, False, '10', '11', 'tz name'))))) for testtuple in testtuples: self.assertEqual(TupleBuilder.build_datetime(**testtuple[0]), testtuple[1])
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)