如何在python中检查给定的datetime是否有偏移量

如何在python中检查给定的datetime是否有偏移量,python,django,Python,Django,我从用户输入中得到了这三个日期时间,偏移量如下所示 2019-04-02 11:11:31.552611+00 2019-06-20 12:48:56.862291+05:30 2019-06-20 12:48:56.862291+00:00 它保存在Django本地数据库中,但现在我必须检查此日期时间是否有偏移量,而不是+00:00 那么,如何检查呢?您可能需要提供更多关于您的情况的信息,因为我觉得这是一种奇怪的情况。通常,日期时间以UTC格式存储在Django中,然后转换回请求用户的时区 但

我从用户输入中得到了这三个日期时间,偏移量如下所示

2019-04-02 11:11:31.552611+00

2019-06-20 12:48:56.862291+05:30

2019-06-20 12:48:56.862291+00:00

它保存在Django本地数据库中,但现在我必须检查此
日期时间
是否有偏移量,而不是
+00:00


那么,如何检查呢?

您可能需要提供更多关于您的情况的信息,因为我觉得这是一种奇怪的情况。通常,日期时间以UTC格式存储在Django中,然后转换回请求用户的时区

但要回答你眼前的问题:

def has_utc_offset(value):
    offset = value.utcoffset()
    if offset is None:
        return None
    return offset.total_seconds() == 0.0

以下是文档:

使用total second,我部分解决了我的问题

    if parser.parse('2019-06-20 12:48:56.862291+00:00').utcoffset().total_seconds() is == 0.0:
        return True # it has 00 offset
    else:
        return False # it has other format

检查它(输入日期时间)是否有+00:00以外的偏移量时,不需要使用所有表单,只需使用python逻辑函数即可。答案是parser.parse('2019-06-20 12:48:56.862291+00:00')。utcoffset().total_seconds()is==0.0那么它是偏移量is+00当接受来自django drf的输入时,我们需要验证是否有以utc格式发送的数据。parse('2019-06-20 12:48:56.862291+00:00')。utcoffset()为无,parser.parse('2019-06-20 12:48:56.862291+05:00')。utcoffset()为无,两者均为假,所需输出应为第一个false,第二个为TRUE。文档要求设置tzinfo,使其不返回None。您需要解析输入中的tzinfo以利用它。您应该研究不同的日期时间解析器。也许是
dateutil
?那么如何检查给定输入的偏移量不是+00:00