сделать python datetime включающим местный часовой пояс - PullRequest
0 голосов
/ 13 февраля 2019

Я написал этот код Python, но у меня возникли проблемы с его корректной работой на уровне часового пояса.Так что в основном datetime.now () не работает должным образом, так как он не соответствует моему местному времени (парижскому времени).Любая идея, как совать это, пожалуйста.

from datetime import datetime, timedelta
from airflow.operators import 
GoogleCloudStorageToGoogleCloudStorageOperator
copy_trm = GoogleCloudStorageToGoogleCloudStorageOperator(
        task_id='copy_file',
        source_bucket="source",
        source_object="input-files/*.orc",
        destination_bucket="destination",
        destination_object="output-files/recent",
        last_modified_time=datetime.now() - timedelta(days=1)

С наилучшими пожеланиями

Ответы [ 3 ]

0 голосов
/ 14 февраля 2019

Если вы хотите узнать ваше текущее название часового пояса.Это возможно с кодом ниже:

import datetime
dt = datetime.datetime.now()
dt.astimezone().tzname()

Выход:

'IST'

Вы можете отправить время в формате UTC как:

dt.astimezone().utcnow()
0 голосов
/ 14 февраля 2019

Для стандартной библиотеки требуется числовое смещение

Если у вас есть числовое смещение вашего часового пояса (по сравнению с UTC), то вы используете стандартную библиотеку:

>>> from datetime import datetime, timezone
>>> datetime.now().strftime("%c (%Z)")
'Wed Feb 13 23:00:06 2019 ()'
>>> datetime.now(tz=timezone.utc).strftime("%c (%Z)")
'Wed Feb 13 22:00:11 2019 (UTC)'
>>> datetime.now(tz=timezone(timedelta(hours=2))).strftime("%c (%Z)")
'Thu Feb 14 00:00:20 2019 (UTC+02:00)'

Хотя, посколькусмещение может изменяться в течение года (например, при переходе на летнее время), рекомендуется использовать именованный часовой пояс.

с dateutils, используя базу данных часовых поясов хоста

Документация Python по часовому поясу указывает на пакет dateutil.tz , который будет использовать базу данных часового пояса с компьютера, на котором он работает.С другой стороны, пакет pytz поставляется со связанной базой данных часовых поясов.

Я бы лично порекомендовал пакет dateutil, поскольку база данных уже существует на работающей машине.Пока машина поддерживается в актуальном состоянии (как и любой сервер и ПК), все в порядке.

>>> from dateutil.tz import gettz  # GNU/Linux and macOS
>>> # Or, on Windows: from dateutil.tz.win import gettz
>>> datetime.now(tz=gettz("Europe/Paris")).strftime("%c (%Z)")
'Wed Feb 13 23:00:58 2019 (CET)'
>>> datetime.now(tz=gettz("Asia/Taipei")).strftime("%c (%Z)")
'Thu Feb 14 06:01:27 2019 (CST)'
0 голосов
/ 13 февраля 2019

использовать модуль pytz

import pytz
tz = pytz.timezone('Pacific/Johnston')   #change it to your suitable timezone
ct = datetime.now(tz=tz)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...