Как удалить часовой пояс из объекта datetime? - PullRequest
0 голосов
/ 19 апреля 2020

Моя задача - преобразовать дату и время в ut c без информации о часовом поясе перед сохранением в базе данных. Поэтому я делаю:

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)

1 Ответ

1 голос
/ 19 апреля 2020

Вам необходимо присвоить 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)
...