我写了这个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)
最好的问候
答案 0 :(得分:0)
使用pytz模块
import pytz
tz = pytz.timezone('Pacific/Johnston') #change it to your suitable timezone
ct = datetime.now(tz=tz)
答案 1 :(得分:0)
如果您想知道当前的时区名称。可以使用以下代码:
import datetime
dt = datetime.datetime.now()
dt.astimezone().tzname()
输出:
'IST'
您可以采用以下UTC格式发送时间:
dt.astimezone().utcnow()
答案 2 :(得分:0)
如果您具有时区的数字偏移量(与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 documentation on timezone指向dateutil.tz软件包,它将使用运行它的机器上的时区数据库。另一方面,pytz程序包附带捆绑的时区数据库。
我个人建议使用dateutil
软件包,因为该数据库已经存在于运行的计算机上。只要机器保持最新状态(任何服务器和PC都应如此),您就可以使用。
>>> 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)'