Python dateutil,检查给出的值

时间:2013-12-21 12:02:10

标签: python-dateutil

我正在解析excel文档并获取日期时间值......

我使用dateutil将其转换为python datetime值...

例如,如果传入的值是'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 个答案:

答案 0 :(得分:0)

此功能尚未在dateutil模块中实现。不过,您可以根据需要修改此snippet

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