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