解析日期可能不包含毫秒

时间:2018-11-09 01:24:07

标签: python python-2.7 datetime

因此,这个问题是处理python中此类输入的最佳方式。这是输入日期$cfg['Servers'][$i]['host'] = '192.168.0.10'; 的示例。毫秒部分可能是输入的一部分,也可能不是输入的一部分。

我目前正在使用此代码将其转换为日期时间

2018-12-31 23:59:59.999999

但是这种情况下的问题是,如果输入字符串不包含毫秒部分,即input_ts = datetime.datetime.strptime(input_str, '%Y-%m-%dT%H:%M:%S.%f')

,它将引发异常。

在Java中,我本可以以两种方式解决此问题。 (它是一种伪解释,没有考虑小边界检查)

  1. (首选方法)。检查输入字符串的长度。如果小于 19 ,则表示缺少毫秒。附加2018-12-31 23:59:59

  2. (不推荐)。让主代码解析该字符串(如果它引发异常),然后以新的时间格式(即.000000

  3. 进行解析)
  4. 第三种方法可能只是去除毫秒。

我不确定python是否内置任何东西来处理这种情况。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您可以使用python-dateutil库,该库足够聪明,可以解析大多数基本日期格式。

import dateutil.parser
dateutil.parser.parse('2018-12-31 23:59:59.999999')
dateutil.parser.parse('2018-12-31 23:59:59')

如果您不想安装任何外部库,则可以按照建议的in this answer遍历不同格式的列表。

答案 1 :(得分:-1)

from datetime import datetime # import datetime class from datetime package

dt = datetime.now() # get current time
dt1 = dt1.strftime('%Y-%m-%d %H:%M:%S') # converting time to string
dt3 = dt2.strptime('2018/5/20','%Y/%m/%d') # converting a string to specified time