首页 > python 相对时间转换

python 相对时间转换

a = "3月10天前"
b = "10天3小时前"
c = "7小时5分钟前"

根据当前系统时间转换为 0000-00-00 00:00 的格式,没有小时/分钟的分别算作00

    >>> import datetime
    >>> now = datetime.datetime.now()
    >>> now
    datetime.datetime(2016, 5, 5, 23, 18, 38, 779000)
    >>> now + datetime.timedelta(days=-10, microseconds=50, seconds=20)
    datetime.datetime(2016, 4, 25, 23, 18, 58, 779050)

3个月这个具体时间间隔不能确定,其它都可以算。


def gtime(atime):
    match = re.match(r'(\d+)(\D+)(\d+)(\D+)',atime, re.M|re.I)
    match2 = re.match(r'(\d+)(\D+)',atime, re.M|re.I)
    days = 0
    secs = 0
    if match:
        d1 = int(match.group(1))
        d2 = int(match.group(3))
        t1 = match.group(2)
        t2 = match.group(4)

        if t1 == u"月":
            days += d1 * 30
        elif t1 == u"天":
            days += d1
        elif t1 == u"小时":
            secs += d1 * 3600
        elif t1 == u"分":
            secs += d1 * 60

        if t2 == u"天":
            days += d2
        elif t2 == u"小时":
            secs += d2 * 3600
        elif t2 == u"分钟":
            secs += d2 * 60
        elif t2 == u"秒":
            secs += d2
    elif match2:
        d1 = int(match2.group(1))
        t1 = match2.group(2)
        if t1 == u"月":
            days += d1 * 30
        elif t1 == u"天":
            days += d1
        elif t1 == u"小时":
            secs += d1 * 3600
        elif t1 == u"分":
            secs += d1 * 60
        elif t1 == u"秒":
            secs += d1
    time = now + datetime.timedelta(days=-days, seconds=-secs)
    return time

时间越远,准确度越低,反正也只是粗略时间,月取30天就行了

换算没有PHP strtotime()那么方便,可以直接用年、月等任何时间单位进行计算,不知道python有没有提供类似功能的模块

【热门文章】
【热门文章】