A API com qual estou trabalhando exige uma data no seguinte formato:
Example: startTime=2020-01-01T00:01:00Z - The ISO 8601 datetime (inclusive) from which to include records into the results. Only UTC time zone is accepted.
Assim, quando passo a data de hoje, iniciando a 00:00:00 e finalizando 23:59:59 ela funciona perfeitamente. Mas a idéia é que o usuário possa filtrar por data, por isso, criei uma aplicação de controle.
Nessa Aplicação de Controle, no qual coloquei 2 campos: startTime e endTime
então no evento OnValidadeSucess, inseri:
if ((sc_date_empty({startTime})) || (sc_date_empty({endTime})))
{
sc_error_message(“Dados inválidos”);
}
else
{
// chamando a Blank que irá autenticar e trazer as informações da API
sc_redir(function_get_activity.php, [startT]={startTime}; [endT]={endTime}, “_blank”);
}
// assim envio como parametro [startT] e [endT]
Agora que vem a Questão
A API exige o forma citado acima e no OnExecute da Blank estou tentando converter as datas das variáveis [startT] e [endT], mas sem sucesso.
[startT] = date(‘Y-m-d\TH:i:s’) . ‘Z’;
[endT] = date(‘Y-m-d\TH:i:s’) . ‘Z’;
Preciso inserir na URL as datas que vem do Controle para a busca na API, aí o problema, pois desta forma não funciona:
“https://api.xxx.xxxx/$phone_id?startTime=[startT]&endTime=[endT]”,
Mas assim funciona:
“https://api.xxx.xxxx/$phone_id?startTime=2024-02-01T00:00:00Z&endTime=2024-02-05T23:59:59Z” (Se eu não passar os parâmetros de data, ele sempre trás dados da data de hoje também)
quando dou echo [startT], a data vem formatada corretamente: 2024-02-06T21:31:07Z, mas não trás a data escolhida no controle, trás apenas a data e hora atual.
Tentei também usando uma função:
function convertTimeIso($datetime) {
return gmdate(‘Y-m-d\TH:i:s’) . ‘Z’;
}
chamando ela assim:
$startTime = convertTimeIso(’[startT]’);
$endTime = convertTimeIzo(’[endT]’);
e na URL
“https://api.xxx.xxxx/$phone_id?startTime=$startTime&endTime=$endTime”
Também sem sucesso… alguém já trabalhou com esse formato?
Já pesquisei em diversos fóruns e mesmo o Manual do PHP, mas não consegui, onde posso estar errando?
Citei apenas um exemplo de como tentei, mas já são alguns dias tentando uma solução e com isso acumulei diversas tentativas, como podem ver abaixo.
mas se alguém puder, me ajudar, fico muito grato.
Tentativas sem sucesso
// date_default_timezone_set(‘America/Sao_Paulo’);
// $data = date(‘Y-m-d h:i:s’);
// $startTime = date("[startTime]");
// $endTime = date("[endTime]");
// $formatStart = "Y-m-d\T00:00:00\Z";
// $formatEnd = "Y-m-d\T23:59:59\Z";
// $startTime = gmdate("[startTime]" $formatStart);
// $endTime = gmdate("[endTime]" $formatEnd);
// gmdate(string $format, ?int $timestamp = null): string
// Exibe algo como: 2000-07-01T00:00:00+00:00
// echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
// $startTime = date(DATE_ATOM, mktime("[startTime"]));
// $endTime = date(DATE_ATOM, mktime("[endTime]"));
// $startTime = new DateTime('[startT]');
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// echo $startTime->format(DateTimeInterface::ATOM); // Updated ISO8601
// echo "<br>";
// $endTime = new DateTime('[endT]');
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// echo $endTime->format(DateTimeInterface::ATOM); // Updated ISO8601
// $startTime = "[startT]";
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// $startTime = gmdate('Y-m-d\TH:i:s\Z P');
// $endTime = "[endT]";
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// $endTime = gmdate('Y-m-d\TH:i:s\Z P');
// echo $startTime;
// echo "<br>";
// echo $endTime;
// $dateStringStart = '[startTime]';
// $start = strtotime($dateStringStart);
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// $startTime = gmdate('Y-m-d\TH:i:s\Z P', $start);
// echo $startTime;
// echo "<br>";
// $dateStringEnd = '[endTime]';
// $end = strtotime($dateStringEnd);
// date_default_timezone_set('America/Sao_Paulo'); // GMT -3
// $endTime = gmdate('Y-m-d\TH:i:s\Z P', $end);
// echo $endTime;
// $startTime = gmdate("Y-m-d\T00:00:00\Z");
// $endTime = gmdate("Y-m-d\T23:59:59\Z");
// 2018-10-08T00%3A00%3A00
// 2024-02-01T14:32:16Z +00:00
// 2024-02-01T00:01:00Z -- essa é a saída exigida
// 2024-02-06T14:03:40Z
// 2023-03-29T05:54:21+0000
// 2023-03-29T05:54:21+00:00
// $isoDate = gmdate('Y-m-d\TH:i:s') . 'Z'; // outputs: 2017-10-18T23:04:17.000Z
// echo $isoDate;
// $startTimer = $isoDate;
// echo [startT];
// echo "<br>";
// echo [endT];
// [startT] = date('Y-m-d\TH:i:s') . 'Z';
// [endT] = date('Y-m-d\TH:i:s') . 'Z';
// echo [startT];
// echo "<br>";
// echo [endT];
// $startTimer = [startT];
// $endTimer = [endT];
// $startTimer = convertTimeIso('[startT]');
// $endTimer = convertTimeIzo('[endT]');