stdtypes.py 文件源码

python
阅读 32 收藏 0 点赞 0 评论 0

项目:meta 作者: flowdas 项目源码 文件源码
def parse(self, value, property, context):
        value = value.strip()
        m = self.PATTERN1.match(value)
        if m is None:
            if issubclass(property, Time):
                m = self.PATTERN2.match(value)
                if m is None:
                    raise ValueError()
            else:
                raise ValueError()

        if m.groupdict().get('Y'):
            date = datetime.date(*map(lambda x: 1 if x is None else int(x), m.group('Y', 'm', 'd')))
        else:
            date = datetime.date.fromtimestamp(0)

        if issubclass(property, Date):
            return date

        if m.group('H'):
            hour, min, sec = m.group('H', 'M', 'S')
            hour = int(hour)
            min = int(min) if min else 0
            sec = float(sec) if sec else 0.0
            time = datetime.time(hour, min, int(sec), int((sec % 1.0) * 1000000))
        else:
            time = datetime.time()

        if m.group('tzd'):
            if m.group('tzd') in ('Z', '+00:00', '-00:00'):
                tzinfo = timezone.utc
            else:
                offset = int(m.group('tzh')) * 60 + int(m.group('tzm'))
                if m.group('tzd').startswith('-'):
                    offset = -offset
                tzinfo = timezone(datetime.timedelta(minutes=offset))
            time = time.replace(tzinfo=tzinfo)

        if issubclass(property, Time):
            return time

        return datetime.datetime.combine(date, time)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号