![](/img/trans.png)
[英]using unix timestamp generate timedelta for babel's format_timedelta
[英]using cython to generate a unix timestamp
如果內存中有每個整數都可以構造一個datetime對象,那么有沒有比下面更好的方法了?
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()
並未考慮day_of_week
和day_in_year
,因此可以將它們設置為-1
。
您也可以將dst
設置為-1
,指示mktime
應該自動確定DST是否有效。
使用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)
當您在Python中調用time.mktime()
時,這正是幕后發生的事情 。
同樣,將忽略tm_wday
/ day_of_week
和tm_yday
/ day_in_year
,並且dst
可能為-1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.