我有一个API,必须向其发送一个时期的开始和结束日期。唯一的问题是它将不接受微秒。
我使用datatime构建了一个时间函数,但是它计算了微秒。我尝试了.replace(microsecond = 0),但这只是将.0留给了我的API抱怨的纪元。我还尝试导出到strptime,但是后来我的.timestamp函数无法将其解析为字符串。
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
params = {'start_date':timestart.timestamp(), 'end_date':timeend.timestamp()}
我希望基本上可以计算出我可以传递给我的API的当前时间和24小时前的时间(不必太精确)。
答案 0 :(得分:4)
您可以简单地将cast
和timestart.timestamp()
的值timeend.timestamp()
和floats
的值ints
转换为from datetime import datetime, timedelta
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
s = int(timestart.timestamp())
e = int(timeend.timestamp())
params = {'start_date':s, 'end_date':e}
print(params)
,即:
{'start_date': 1554121647, 'end_date': 1554208047}
输出:
SignalR
答案 1 :(得分:0)
我通常使用time.mktime()
将日期时间转换为纪元时间:
from datetime import datetime, timedelta
import time
timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()
params = {
'start_date': int(time.mktime(timestart.timetuple())),
'end_date': int(time.mktime(timeend.timetuple()))
}
# Output
{'start_date': 1554123099, 'end_date': 1554209499}
答案 2 :(得分:0)
Pedro的替代解决方案:
from datetime import datetime
from datetime import timedelta
timestart = (datetime.now() - timedelta(hours = 24)).strftime("%s")
timeend = datetime.now().strftime("%s")
params = {'start_date':timestart,
'end_date':timeend}
输出:
{'start_date': '1554124346', 'end_date': '1554210746'}