使用pytz、datetime和python3自定义显示给用户的时区

2024-04-26 20:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用户列表:

tom, 0530, eastern
dick, 0745, pacific
harry, 0915, central
ect...

我需要在那个特定的时间(或在5分钟内)给他们发一封电子邮件。我正在编写一个python脚本,每5分钟用cron运行一次。你知道吗

## pseudo code:
for user in users:
  if difference of usertime and utctime is <= 5 minutes:
    send email

我就快到了,但我现在要做的就是计算转换后的时区。你知道吗

代码:

import datetime
import pytz
today = datetime.datetime.now().date()
user1 = pytz.timezone('US/Eastern').localize(datetime.datetime(today.year, today.month, today.day, 5, 30)) 
now_utc = datetime.datetime.now(pytz.timezone('UTC'))
user1_converted = user1.astimezone(pytz.timezone('UTC'))
now_utc - user1_converted
##maths

Tags: 用户import列表todaydatetimenowutctimezone
1条回答
网友
1楼 · 发布于 2024-04-26 20:39:04

我们称之为“鼹鼠山造山”:

听起来你有用户偏好的时间,他们希望被发送电子邮件,时区,他们的一部分。你知道吗

例如tom = ('US/Eastern', "09:15")

当脚本运行时,它必须做的第一件事是建立当前时间(UTC)。你知道吗

from datetime import datetime
current_time = datetime.utcnow()

然后需要将用户的当前时间和首选项时间转换为UTC时间。From this question。你知道吗

tz = timezone('US/Pacific')
def toUTC(d):
    return tz.normalize(tz.localize(d)).astimezone(pytz.utc)

完成后,你可以从另一个中减去一个,并与你设定的阈值(5分钟)进行比较,看看是否是发送电子邮件的正确时间。你知道吗

相关问题 更多 >