如何获取纪元(1970-01-01)起datetime格式天数及FatSecret API适配问题
解决纪元天数计算与FatSecret API dateint格式问题
我来帮你搞定这两个问题,刚好之前对接FatSecret API时也踩过类似的日期坑!
1. 获取datetime从纪元开始的天数
要计算从1970年1月1日到指定datetime的天数,核心是用datetime对象之间的减法得到时间差,再提取天数部分:
import datetime # 定义纪元起始时间(必须是datetime对象) epoch_start = datetime.datetime(1970, 1, 1) # 获取当前时间(或你需要的任意datetime) current_datetime = datetime.datetime.now() # 计算时间差(得到timedelta对象) time_diff = current_datetime - epoch_start # 提取完整天数(整数类型) days_since_epoch = time_diff.days print(days_since_epoch) # 比如输出:17643(对应2018-04-23)
这个方法直接操作datetime对象,不会出现类型不匹配的问题,得到的days_since_epoch就是纯整数天数。
2. FatSecret API的dateint格式适配
你提到的dateint格式,本质就是从纪元开始的天数整数,刚好就是上面代码得到的days_since_epoch。
至于你遇到的TypeError: unsupported operand type(s) for -: 'float' and 'datetime.datetime',大概率是不小心把time.time()(返回纪元以来的秒数浮点数)和datetime.datetime对象做减法了——这两种类型不能直接运算!一定要保证相减的两边都是datetime对象,就像上面的示例那样。
把计算好的days_since_epoch直接传给FatSecret API的dateint参数就可以了,不用转成秒数,这就是API要求的格式。
内容的提问来源于stack exchange,提问作者Brando
相关产品推荐
相关产品推荐

