【问题标题】:Python date formattingPython日期格式化
【发布时间】:2018-04-18 09:11:52
【问题描述】:

如何获得一个函数来获取 YYYY-MM-DD、YYYY/MM/DD 和 DD.MM.YYYY 的日期并返回 YYYY-MM-DD? 我尝试了几种适用于其中一种格式但不适用于另一种格式的方法

【问题讨论】:

  • 尝试使用日期时间解析所有 3 种格式并捕获异常。
  • @Jean-FrançoisFabre:格式可以通过分隔符轻松检测到。
  • @MitchWheat:我看不出这种欺骗是如何应用在这里的。该问题或任何答案的解析为零。

标签: python date


【解决方案1】:

只需打开输入中的分隔符字符串即可选择合适的datetime.strptime() 格式:

from datetime import datetime

FORMATS = {'-': '%Y-%m-%d', '/': '%Y/%m/%d', '.': '%d.%m.%Y'}
def convertdate(ds, outputformat='%Y-%m-%d', _formats=FORMATS):
    for delim, format in _formats.items():
        if delim in ds:
            return datetime.strptime(ds, format).strftime(outputformat)

演示:

>>> convertdate('2012-03-12')
'2012-03-12'
>>> convertdate('2012/03/12')
'2012-03-12'
>>> convertdate('12.03.2012')
'2012-03-12'

【讨论】:

    【解决方案2】:

    一条线很难全部尝试,所以你可以这样尝试:

    from datetime import datetime
    dt = "30-4-1994"
    for fmt in ('%Y-%m-%d', '%Y/%m/%d', '%d.%m.%Y'):
        try:
            example_time =  datetime.strptime(dt, fmt).date()
            print(example_time)
        except ValueError:
            continue
    

    O/P 将采用 YYYY-MM-DD 格式,如下所示:

    1994-04-30
    

    【讨论】:

      猜你喜欢
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多