gpt4 book ai didi

python - 在python中找到最后一个午夜时间戳

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:26 27 4
gpt4 key购买 nike

我想找到最后一个午夜时间戳(只输入当前时间戳)。什么是最好的方法?

我正在为全局移动应用程序编写 python 脚本。用户请求当前时间戳,在服务器端我想找到用户的最后一个午夜时间戳而不影响时区参数。

我搜索了一下,找到了解决方案

import time
etime = int(time.time())
midnight = (etime - (etime % 86400)) + time.altzon

它对我有用。但是我对 time.altzon 函数感到困惑,它是否会给不同时区的用户带来任何问题。

最佳答案

要获取客户端(移动)的午夜时间戳,您需要知道客户端的时区。

from datetime import datetime
import pytz # pip install pytz

fmt = '%Y-%m-%d %H:%M:%S %Z%z'
tz = pytz.timezone("America/New_York") # supply client's timezone here

# Get correct date for the midnight using given timezone.

# due to we are interested only in midnight we can:

# 1. ignore ambiguity when local time repeats itself during DST change e.g.,
# 2012-04-01 02:30:00 EST+1100 and
# 2012-04-01 02:30:00 EST+1000
# otherwise we should have started with UTC time

# 2. rely on .now(tz) to choose timezone correctly (dst/no dst)
now = datetime.now(tz)
print(now.strftime(fmt))

# Get midnight in the correct timezone (taking into account DST)
midnight = tz.localize(now.replace(hour=0, minute=0, second=0, microsecond=0, tzinfo=None),
is_dst=None)
print(midnight.strftime(fmt))

# Convert to UTC (no need to call `tz.normalize()` due to UTC has no DST transitions)
dt = midnight.astimezone(pytz.utc)
print(dt.strftime(fmt))

# Get POSIX timestamp
print((dt - datetime(1970,1,1, tzinfo=pytz.utc)).total_seconds())

输出

2012-08-09 08:46:29 EDT-0400
2012-08-09 00:00:00 EDT-0400
2012-08-09 04:00:00 UTC+0000
1344484800.0

注意:在我的机器上@phihag's answer生成与上面不同的1344470400.0(我的机器不在纽约)。

关于python - 在python中找到最后一个午夜时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11882718/

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