Beispiel #1
0
    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])
Beispiel #2
0
    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])
Beispiel #3
0
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)