python - 将相对日期字符串转换为绝对日期

标签 python string datetime date

作为输入,我有一个可以采用三种通用格式的日期字符串:

a) 2011 年 1 月 6 日 b) 4 天前 c) 12 小时前

我希望脚本能够识别格式并使用参数调用适当的函数。

所以如果 a then convert_full_string("January 6, 2011")

如果 b 那么 convert_days(4)

如果 c 那么 convert_hours(12)

一旦我识别了格式并能够调用适当的函数,它就会相对容易。我计划使用 dateutil

但我不确定如何识别格式。

非常感谢任何有关代码示例的建议。

最佳答案

使用 parsedatetime ,您可以将所有三种日期格式解析为 datetime.datetime 对象,而无需自己编写逻辑代码:

import parsedatetime.parsedatetime as pdt
import parsedatetime.parsedatetime_consts as pdc
import datetime
c = pdc.Constants()
p = pdt.Calendar(c)
for text in ('january 6, 2011', '4 days ago', '12 hours ago'):
    date=datetime.datetime(*p.parse(text)[0][:6])
    # print(date.isoformat())
    # 2011-01-06T09:00:18
    # 2011-01-02T09:00:18
    # 2011-01-05T21:00:18
    print(date.strftime('%Y%m%dT%H%M%S'))
    # 20110106T090208
    # 20110102T090208
    # 20110105T210208

关于python - 将相对日期字符串转换为绝对日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4615250/

相关文章:

c - 如何在 C 中使用 char 指针初始化 char 数组

datetime - 毫秒格式来解析日期时间?

python - 根据数据帧的列在 python 中创建字典

python - 从列表中删除唯一元素

c - 为什么对于具有指定长度的数组,C 中的文字字符串赋值是不可能的?

php - 获取php DateInterval 共 'minutes'

javascript - Atom编辑器:用于插入时间戳的代码段

python - 如何径向 'sweep out' 1D 数组在 python 中绘制 3d 图形? (表示波函数)

python - 在树莓派2上的临时文件中读取图像

c++ - 动态字符串数组,编译错误