gpt4 book ai didi

python - 使用 cython 生成 unix 时间戳

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

如果你有内存中的每个整数来构造一个日期时间对象,是否有比以下更好的方法。

atoi(datetime(year,month,day,hour,minute,second).stftime("%s"))

最佳答案

您可以使用 time.mktime()连同 datetime.timetuple() :

dt = datetime.datetime(year, month, day, hour, minute, second)
unix_time = time.mktime(dt.timetuple())

或者,如果您不需要datetime 对象,您可以构造一个与time.struct_time 兼容的9 元组。并将其直接传递给 mktime():

time_tuple = (year, month, day, hour, minute, second, day_of_week, day_in_year, dst)
unix_time = time.mktime(time_tuple)

请注意 time.mktime() does not take into account day_of_week and day_in_year ,所以请随意将它们设置为 -1

也可以将dst设置为-1,表示mktime会自动判断夏令时是否生效。


使用 Cython,您还可以构造一个 struct tm 并将其直接传递给 mktime(3) :

from libc.time cimport tm, mktime

cdef tm time_tuple = {
'tm_sec': second,
'tm_min': minute,
'tm_hour': hour,
'tm_mday': day,
'tm_mon': month - 1,
'tm_year': year - 1900,
'tm_wday': day_of_week,
'tm_yday': day_in_year,
'tm_isdst': dst,
'tm_zone': NULL,
'tm_gmtoff': 0,
}
unix_time = mktime(&time_tuple)

这正是 what happens behind the scenes when you call time.mktime()在 Python 中。

同样,tm_wday/day_of_weektm_yday/day_in_year 被忽略,dst 可能是 -1

关于python - 使用 cython 生成 unix 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30124613/

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