gpt4 book ai didi

python - Python 和 Django 时区格式问题

转载 作者:行者123 更新时间:2023-12-04 03:52:39 24 4
gpt4 key购买 nike

我最近在我的 settings.py 中添加了 USE_TZ = True 让 Celery 在我的 Django 项目上工作,现在在我的其他 View 中使用 datetime。 strptime 命令,它正在添加 -04:00 因为我的时区是 America/New_York。我不需要这个字段的时区。如何从中删除时区?下面是我的代码。

new_event.start = datetime.strptime(str(obj.start_date) ,"%Y-%m-%d %H:%M:%S") 
new_event.end = datetime.strptime(str(obj.end_date) ,"%Y-%m-%d %H:%M:%S")

最佳答案

假设在变量 my_time_1 中存储的时间与您希望的时间相差 X_var 小时。

您可以通过执行以下操作“手动”取消增量:

X_var = -4 # In your case the delta is equal to -4

from datetime import timedelta
my_time_1 = my_time_1 + timedelta(hours=X_var)

但是,这不是很干净,也许你应该将根据前一个时区表示的时间转换为根据后一个时区表示的时间。

你可以使用这个自定义函数:

# I copied it from some SO question but can't find which one

import pytz, datetime

def convert_datetime_timezone(date_and_time_input, tz1, tz2):
tz1 = pytz.timezone(tz1)
tz2 = pytz.timezone(tz2)

dt = datetime.datetime.strptime(date_and_time_input,"%Y-%m-%d %H:%M:%S")
dt = tz1.localize(dt)
dt = dt.astimezone(tz2)
dt = dt.strftime("%Y-%m-%d %H:%M:%S")

return dt

因此,要将 my_time_1 从 America/New_York 切换回 UTC,您可以使用:

my_time_1 = convert_datetime_timezone(my_time_1, America/New_York, UTC)

您应该如何解决您的问题:

替换:

new_event.start = datetime.strptime(str(obj.start_date) ,"%Y-%m-%d %H:%M:%S") 
new_event.end = datetime.strptime(str(obj.end_date) ,"%Y-%m-%d %H:%M:%S")

与:

import pytz, datetime    

def convert_datetime_timezone(date_and_time_input, tz1, tz2):
tz1 = pytz.timezone(tz1)
tz2 = pytz.timezone(tz2)

dt = datetime.datetime.strptime(date_and_time_input,"%Y-%m-%d %H:%M:%S")
dt = tz1.localize(dt)
dt = dt.astimezone(tz2)
dt = dt.strftime("%Y-%m-%d %H:%M:%S")

return dt

adjusted_start_date = convert_datetime_timezone(obj.start_date, America/New_York, UTC)
adjusted_end_date = convert_datetime_timezone(obj.end_date, America/New_York, UTC)

new_event.start = datetime.strptime(str(adjusted_start_date) ,"%Y-%m-%d %H:%M:%S")
new_event.end = datetime.strptime(str(adjusted_end_date) ,"%Y-%m-%d %H:%M:%S")

关于python - Python 和 Django 时区格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64251878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com