Python dateutil, проверьте, какое значение дается

Я анализирую документ Excel и получаю значения даты и времени...

Я использую dateutil, чтобы преобразовать его в значения даты / времени Python...

Например, если входящее значение равно "2012", мне нужен способ понять, что указан только год

или если значение равно "13:05", указывается только час-минута.

from dateutil.parser import *            
def convertToDatetime(inValue):
    #if inValue is '2012' i need a way to understand only year is given. Can i do this while     parse method is used?
    rVal = parse( inValue )
    return rVal

Как я могу сделать это?

----- РЕДАКТИРОВАТЬ ----

Я тоже могу задать вопрос таким образом:

Если указан только год, dateutil завершает день и месяц с сегодняшними значениями... Но мне нужны нулевые значения для месяца и дня, если указан только год...

1 ответ

Эта функция еще не реализована в модуле dateutil. Вы можете изменить этот фрагмент в соответствии с вашими требованиями.

from dateutil import parser
from datetime import datetime
import warnings

def double_parse(dt_str):
    dflt_1 = datetime(1, 1, 1)
    dflt_2 = datetime(2, 2, 2)

    dt1 = parser.parse(dt_str, default=dflt_1)
    dt2 = parser.parse(dt_str, default=dflt_2)

    if dt2.year != dt1.year:
        warnings.warn('Year is missing!', RuntimeWarning)
        return dt1.replace(year=datetime.now().year)

    return dt1

if __name__ == "__main__":
    print(double_parse('2017-04-05'))
    # 2017-04-05 00:00:00

    print(double_parse('03:45 EST'))
    # stderr: RuntimeWarning: Year is missing!
    # 2017-01-01 03:45:00-05:00
Другие вопросы по тегам