在Python中处理时间间隔?

2022-07-06 12:50:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要解析字符串表示,如'1年','2天'等成ISO8601格式的时期。最终结果必须与PHP中的DateInterval::createFromDateString相同

作为占位符,我已经硬编码了一小组值,我知道这些值在绝大多数情况下都会出现,但很明显,从长远来看,这并不是令人满意的解决方案:

class Interval(object):
    _map = {
        '1 MONTH': 'P1M',
        '6 MONTH': 'P6M',
        '1 YEAR': 'P1Y',
        '7 DAY': 'P7D',
        '5 DAY': 'P5D',
        '1 DAY': 'P1D',
        '2 WEEK': 'P2W',
        '1 WEEK': 'P1W',
        '2 DAY': 'P2D',
        '2 YEAR': 'P2Y',
        '12 MONTH': 'P12M',
    }

    @staticmethod
    def convert(period):
        if period not in Interval._map.keys():
            #  log error
            return ''

        return Interval._map[period]

有没有一个干净的方法来做这件事,而不是硬代码?你知道吗


Tags: 字符串mapreturn格式yearperiodphpweekintervaldayiso8601month时期createfromdatestringdateinterval