我想使用 python 设置一个与我系统上本地看到的不同的固定时间,这样当我使用 datetime.date.today() 时我就可以看到所需的日期
添加参数 tz_offset。请参阅文档 https://pypi.org/project/freezegun/
from freezegun import freeze_time
@freeze_time("2012-01-14 03:21:34", tz_offset=-4)
def test():
assert datetime.datetime.utcnow() == datetime.datetime(2012, 1, 14, 3, 21, 34)
有时断言会因时区而失败,因此添加带有常量时区的参数 tz_offset 可以修复该问题。 不修复测试中的时区可能会导致不稳定的测试,因为有时测试会通过,但在短时间内测试会失败。
您可以将 pytz 包与日期时间一起使用, 并立即指定日期时间。
from datetime import datetime
import pytz
# add wanted timezone instead of America/New_York
timeZone_AN = pytz.timezone('America/New_York')
dt_Ny = datetime.now(timeZone_AN)
print("Datetime: ", dt_Ny)
根据 MrFuppes 评论进行更新,因为 pytz 将被弃用,您可以使用 zoneinfo。 看起来它会比 pytz 更有用。
from zoneinfo import ZoneInfo
timeZone_AN=("America/New_York")
更新
如果您想获得固定的日期时间,那么这会对您有所帮助。
# set your date as year, month, day
desiredTime_ymd = datetime.date(2020, 9,14)
#print to test
print(desiredTime_ymd)
#set sec, min, hour
desiredTime_smh=time(14, 42, 59)
#print to test
print(desiredTime_smh)
#set all at once
#datetime(year, month, day, hour, minute, second, microsecond)
desredTime_all = datetime(2020, 9,14, 14, 42, 59)
#print to test
print(desiredTime_all)