我需要将字符串表示形式(例如“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]
有没有一种干净的方法可以做到这一点,而不是硬编码?