【问题标题】:How to remove timezone from datetime object?如何从日期时间对象中删除时区?
【发布时间】:2020-04-19 12:53:25
【问题描述】:

我的任务是在存储到数据库之前将 datetime 转换为没有时区信息的 utc。所以我这样做:

async def post(payload: InvoiceSchema):
    dt = payload.timestamp
    dt = dt.astimezone(timezone.utc)
    dt.replace(tzinfo=None)

    query = invoices.insert().values(
        merchant_name=payload.merchant_name,
        amount=payload.amount,
        timestamp=dt
    )
    return await database.execute(query=query)

但我还是有错误

asyncpg.exceptions.DataError: invalid input for query argument $3: datetime.datetime(2020, 4, 20, 8, 
12, 12... (can't subtract offset-naive and offset-aware datetimes)

【问题讨论】:

    标签: python postgresql datetime async-await


    【解决方案1】:

    您需要将 dt.replace 分配给一个新变量:

    In [8]: dt = datetime.now()
       ...: dt = dt.astimezone(timezone.utc)
       ...: dt1= dt.replace(tzinfo=None)
    
    In [9]: dt1
    Out[9]: datetime.datetime(2020, 4, 19, 12, 59, 56, 439648)
    
    In [10]: dt
    Out[10]: datetime.datetime(2020, 4, 19, 12, 59, 56, 439648, tzinfo=datetime.timezone.utc)
    

    【讨论】:

      猜你喜欢
      • 2012-06-12
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 2019-05-25
      • 1970-01-01
      相关资源
      最近更新 更多