去掉纪元时的微秒需要帮助

2024-09-30 06:14:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个API,我必须发送一个epoch时间开始和结束日期。唯一的问题是它不接受微秒

我使用datatime构建了一个时间函数,但是它计算的是微秒。我尝试了.replace(微秒=0),但这只会使.0处于Epoch状态,我的API对此表示不满。我还尝试导出到strtime,但我的.timestamp函数未能将其解析为字符串

timestart = datetime.now() - timedelta(hours = 24)
timeend = datetime.now()

params = {'start_date':timestart.timestamp(), 'end_date':timeend.timestamp()}

我想基本上以Epoch和24小时前的时间来计算当前时间(这不一定是超精确的),我可以传递给我的API


Tags: 函数apidatetimedate状态时间nowtimestamp
3条回答

只需将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}

Demo

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'}

我通常使用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}

相关问题 更多 >

    热门问题