Python 2.7 将偏移量转换为非偏移量的Python日期

Python 2.7 将偏移量转换为非偏移量的Python日期,python-2.7,datetime,python-dateutil,Python 2.7,Datetime,Python Dateutil,我有一个时间输入字符串: from dateutil.parser import parse from dateutil.relativedelta import relativedelta from dateutil.tz import gettz from datetime import datetime, timedelta input_time = '2019-02-01 09:50:08+11:00' parsed=parse(inp

我有一个时间输入字符串:

    from dateutil.parser import parse
    from dateutil.relativedelta import relativedelta
    from dateutil.tz import gettz
    from datetime import datetime, timedelta

    input_time = '2019-02-01 09:50:08+11:00'

    parsed=parse(input_time)
    print parsed.tzinfo
我想将其转换为以下格式:YYYY-MM-DD HH:MM:SS。基本上,将偏移量添加到实际时间对象。对于上面的示例,我正在寻找以下输出:

       input_time = '2019-02-01 09:50:08+11:00'
在dateutil库中找到一些有用的东西来解析作为字符串传递的日期对象并获取偏移量详细信息,但它提供了以下输出:

      input_time_converted = '2019-02-01 20:50:08'
但我不知道如何从上面得到实际数字,然后做剩下的数学

正如官方dateutil解析器文档中所解释的那样,我试着用来调用它-

          tzoffset(None, 39600)

但没有起作用。

答案适用于python3,这是python2,这不是重复。omgAre你的输入时间真的像UTC时间加上他们应该有的时区偏移一样混乱,但不是吗?不,所有的输入都和示例一样。使用UTC时间加/减偏移量。正如您所知,UTC的预期日期时间是错误的。你想做与偏移量相反的事情,所以你的结果应该是“2019-01-31 22:50:08”。如果添加偏移量,实际上就是将其加倍。除非这是你想做的。@Chris说的:如果正常,输入时间已经应用了偏移量,并且是在当地时间。我必须修改时间戳,偏移量=ts[:19],ts[19:]为时间戳,偏移量=ts[:19],ts[20:]使其工作。加号把事情搞砸了。我仍然会将其标记为解决方案,如果您愿意,您可以决定对其进行改进。谢谢@takobaba是的,我搞砸了。将加号或减号与时间增量一起使用。@takobaba fixedBeauty!现在它是一个完整的答案,以防其他人需要它。谢谢
   print parsed.tzinfo.tzoffset
#!/usr/bin/env python2


def process_messed_up_timestamp(ts):
    """Convert messed up timestamps to something else.

    Input timestamp is in UTC format with the offset that
    should be applied but hasn't been.
    """
    from datetime import datetime, timedelta
    timestamp, plus, offset = ts[:19], ts[19], ts[20:]
    # should validate plus is '+' or '-'
    fmt = '%Y-%m-%d %H:%M:%S'
    base = datetime.strptime(timestamp, fmt)
    hours, minutes = [int(n) for n in offset.split(':')]
    delta = timedelta(hours=hours, minutes=minutes)
    multiplier = -1 if plus == '-' else 1
    return (base + multiplier * delta).strftime(fmt)


input_time = '2019-02-01 09:50:08+11:00'
input_time_converted = '2019-02-01 20:50:08'
assert process_messed_up_timestamp(input_time) == input_time_converted