HubSpot API问题:无法获取近2分钟修改联系人,返回两天前数据
问题原因及解决方案
你的问题出在时间戳单位不匹配和多余的日期转换步骤上:
HubSpot CRM v3 API的lastmodifieddate过滤器要求传入的时间值是毫秒级Unix时间戳,或是带时区信息的ISO 8601格式日期字符串。你当前传入的是秒级时间戳,HubSpot会将其当作毫秒级处理——这相当于把过滤时间设置到了几十年前,自然会返回所有旧联系人,漏掉最近修改的。
另外,你代码里把strtotime('-2 minutes')的结果转成日期字符串再重新转成时间戳的步骤完全多余,还可能引入时区解析误差。
修正后的代码方案
方案1:使用毫秒级Unix时间戳
date_default_timezone_set('America/Chicago'); // 直接获取2分钟前的秒级时间戳,转换为毫秒级 $pastUnixMs = strtotime('-2 minutes') * 1000; echo "UnixTime (ms):". $pastUnixMs; $url = 'https://api.hubapi.com/crm/v3/objects/contacts/search'; $filters = [ [ "propertyName" => "lastmodifieddate", "operator" => "GTE", "value" => $pastUnixMs ] ];
方案2:使用ISO 8601格式带时区的时间字符串
date_default_timezone_set('America/Chicago'); // 生成包含时区偏移的ISO 8601格式时间 $pastIso = date("c", strtotime('-2 minutes')); echo "ISO Time:". $pastIso; $url = 'https://api.hubapi.com/crm/v3/objects/contacts/search'; $filters = [ [ "propertyName" => "lastmodifieddate", "operator" => "GTE", "value" => $pastIso ] ];
测试时可以先打印出时间值,确认是当前时间往前推2分钟的正确值,再传入API即可获取到最近修改的联系人。
内容的提问来源于stack exchange,提问作者Dilion Smith
相关产品推荐
相关产品推荐

