我正在处理Python中的日期,我需要将它们转换为UTC时间戳,以便在Javascript中使用.以下代码不起作用:
>>> d = datetime.date(2011,01,01)
>>> datetime.datetime.utcfromtimestamp(time.mktime(d.timetuple()))
datetime.datetime(2010, 12, 31, 23, 0)
Run Code Online (Sandbox Code Playgroud)
将日期对象首先转换为datetime也无济于事.我试过这个链接的例子,但是:
from pytz import utc, timezone
from datetime import datetime
from time import mktime
input_date = datetime(year=2011, month=1, day=15)
Run Code Online (Sandbox Code Playgroud)
现在要么:
mktime(utc.localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
要么
mktime(timezone('US/Eastern').localize(input_date).utctimetuple())
Run Code Online (Sandbox Code Playgroud)
确实有效.
所以一般的问题:如何根据UTC获得自纪元以来转换为秒的日期?
表示2012年3月2日的字符串"2012-03-02"作为输入变量(char*)给出.
如何用C编程语言将此日期转换为unix纪元时间?
我尝试直接使用 Cython 而不是 Python 加载 time.himport time但它不起作用。
我得到的只是一个错误
Call with wrong number of arguments (expected 1, got 0)
Run Code Online (Sandbox Code Playgroud)
用下面的代码
cdef extern from "time.h" nogil:
ctypedef int time_t
time_t time(time_t*)
def test():
cdef int ts
ts = time()
return ts
Run Code Online (Sandbox Code Playgroud)
和
Cannot assign type 'long' to 'time_t *'
Run Code Online (Sandbox Code Playgroud)
用下面的代码
cdef extern from "time.h" nogil:
ctypedef int time_t
time_t time(time_t*)
def test():
cdef int ts
ts = time(1)
return ts
Run Code Online (Sandbox Code Playgroud)
有了数学日志我可以简单地做
cdef extern from "math.h":
double log10(double x)
Run Code Online (Sandbox Code Playgroud)
怎么随着时间的推移就不可能了呢?