gpt4 book ai didi

python - 时间 - 获取昨天的日期

转载 作者:行者123 更新时间:2023-11-28 20:42:55 28 4
gpt4 key购买 nike

我正在尝试使用 Python 的 time 模块获取今天和昨天的时间。

这对我来说适用于今天的日期:

dt = time.strptime(time.strftime("%d/%m/%Y"),'%d/%m/%Y')

但是我不知道如何得到昨天的日期。我发现许多使用 datetime 模块的教程,但没有使用 time 模块的地方。

我该怎么做?有没有更好的方法来获取今天的日期 (struct_time)?

最佳答案

要获得昨天的struct_time,请使用许多existing datetime solutions 中的任何一个|并调用 .timetuple() 获取 struct_time 例如:

#!/usr/bin/env python
from datetime import date, timedelta

today = date.today()
yesterday = today - timedelta(1)
print(yesterday.timetuple())
# -> time.struct_time(tm_year=2015, tm_mon=4, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=112, tm_isdst=-1)

即使在 DST 转换前后,它也会在本地时区产生正确的日期。

参见 How can I subtract a day from a python date?如果你想找到相应的 UTC 时间(将昨天作为一个有意识的 datetime 对象)。


您也可以仅使用 time 模块(但不那么直接)获取昨天:

#!/usr/bin/env python
import time

def posix_time(utc_time_tuple):
"""seconds since Epoch as defined by POSIX."""
# from https://gist.github.com/zed/ff4e35df3887c1f82002
tm_year = utc_time_tuple.tm_year - 1900
tm_yday = utc_time_tuple.tm_yday - 1
tm_hour = utc_time_tuple.tm_hour
tm_min = utc_time_tuple.tm_min
tm_sec = utc_time_tuple.tm_sec
# http://pubs.opengroup.org/stage7tc1/basedefs/V1_chap04.html#tag_04_15
return (tm_sec + tm_min*60 + tm_hour*3600 + tm_yday*86400 +
(tm_year-70)*31536000 + ((tm_year-69)//4)*86400 -
((tm_year-1)//100)*86400 + ((tm_year+299)//400)*86400)

now = time.localtime()
yesterday = time.gmtime(posix_time(now) - 86400)
print(yesterday)
# -> time.struct_time(tm_year=2015, tm_mon=4, tm_mday=22, tm_hour=22, tm_min=6, tm_sec=16, tm_wday=2, tm_yday=112, tm_isdst=0)

它假定 time.gmtime() 在给定平台上接受 POSIX 时间戳(Python's stdlib breaks otherwise 例如,如果使用非 POSIX TZ=right/UTC) .可以使用 calendar.timegm() 代替 posix_time() 但前者可以在内部使用 datetime

注意:yesterday 在两种解决方案中都代表本地时间(gmtime() 只是在这里实现减法的一种简单方法)。这两种解决方案都使用天真的时区感知时间对象,因此结果可能是模棱两可甚至不存在的时间,除非本地时区昨天已经跳过(例如,俄罗斯在 1918 年 2 月跳过了几天)那么日期无论如何都是正确的。

关于python - 时间 - 获取昨天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29831030/

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