1

Problema con zona horaria en reporte

Topic: Problema con zona horaria en reporte

Buenas tardes,

Estoy consultando un reporte usando la api con php pero al comparar los resultados con los de la plataforma veo que hay diferencias, tambien consulte el mismo reporte pasando los mismos parametros usando postman como Api request builder y si me devuelve los datos tal cual como se muestran en la plataforma, no se si hay alguna diferencia con la consulta. Tambien intente agregando el parametro  "tzOffset"=>-21600, pero no varian los resultados.

Copio los codigos de consulta tanto de php como del api request builder y sus resultados.

PHP

Consulta:

$params = array(
        'reportResourceId'=> 14080486, // nanti
        'reportTemplateId'=> 28,//rendimiento
        'reportObjectId'=> 13287564,
        'reportObjectSecId'=> 0,
        'interval'=> array('from'=>1498885200,
                                'to'=>1499317199,
                            'flags'=>0),           
        "lang"=>'en',
        );

Resultado: en tables[0] el valor de rows es "6", cuando en la plataforma estoy consultando del dia 1 al 5 de julio y no son los mismos datos que en la consulta de la plataforma.

[tables] => Array
                (
                    [0] => Array
                        (
                            [name] => unit_generic
                            [label] => Rendimiento
                            [grouping] => Array
                                (
                                    [type] => day
                                )

                            [flags] => 33041
                            [rows] => 6
                            [level] => 2
                            [columns] => 7
                            [header] => Array
                                (
                                    [0] => Grouping
                                    [1] => Consumido por FLS
                                    [2] => Rendimiento en km lts
                                    [3] => Nivel de combustible inicial
                                    [4] => Nivel de combustible final
                                    [5] => Llenado
                                    [6] => Descargado
                                )

En el detalle no me da lo mismo que la consulta en la plataforma.


POSTMAN API REQUEST BUILDER:

https://hst-api.wialon.com/wialon/ajax. … p;params={
        "reportResourceId":14080486,
        "reportTemplateId":28,
        "reportObjectId":13287564,
        "reportObjectSecId":0,
        "interval":{
            "from":1498885200,
            "to":1499317199,
            "flags":0
        },
       
        "lang":"en"
    }&sid=0447cec1c551c3b3b3944d488a89bb7d

Resultado: en este resultado me devuelve 5 rows y en el detalle los datos son los que se muestran en la consulta de la plataforma.

Ya intente enviando la fecha en gmt 0, gmt -5 y no me da los resultados de la plataforma, alguna idea de que me esta faltando.

2

Problema con zona horaria en reporte

Re: Problema con zona horaria en reporte

Hola eso suele suceder cuando se hace una agrupación por fechas ya que la zona horaria del data center varia con la nuestra, yo lo que hago en ese caso es restar el tz con cada registro y eso me da la fecha exacta del item, luego hago un algoritmo para agruparlos yo mismo. Un ejempl de lo que te digo si yo tengo un llenados agarro la fecha del evento de llenado y le resto el tz luego verifico y es exactamente igual que un reporte en wialon. el algoritmo que te menciono en ejecución no te tomara mas de unas milésimas de segundo.

Posiblemente hay otra solución mas sencilla pero esa fue la forma que encontré yo. Espero te sirva de algo.

3

Problema con zona horaria en reporte

Re: Problema con zona horaria en reporte

cerpas wrote:

Hola eso suele suceder cuando se hace una agrupación por fechas ya que la zona horaria del data center varia con la nuestra, yo lo que hago en ese caso es restar el tz con cada registro y eso me da la fecha exacta del item, luego hago un algoritmo para agruparlos yo mismo. Un ejempl de lo que te digo si yo tengo un llenados agarro la fecha del evento de llenado y le resto el tz luego verifico y es exactamente igual que un reporte en wialon. el algoritmo que te menciono en ejecución no te tomara mas de unas milésimas de segundo.

Posiblemente hay otra solución mas sencilla pero esa fue la forma que encontré yo. Espero te sirva de algo.


Una pregunta, en que formato pasas la fecha, unixtime gmt0 o unixtime gmt-5 (ciudad de mexico), he intentado pasando de las dos manera, sumando y restando la tz y no logro tener el resultado exacto del reporte de la plataforma, lo raro es que algunos registros si coinciden con el reporte.

Tambien veo que cuando paso el tiempo en gmt-5 me aparece una fila de mas en el resultado.  Podrias compartirme algun ejemplo que hayas realizado.

Porque si copio la consulta(gmt-5) en el postman o navegador si me devuelve el resultado correcto.

Saludos!

4

Problema con zona horaria en reporte

Re: Problema con zona horaria en reporte

wcauichr wrote:
cerpas wrote:

Hola eso suele suceder cuando se hace una agrupación por fechas ya que la zona horaria del data center varia con la nuestra, yo lo que hago en ese caso es restar el tz con cada registro y eso me da la fecha exacta del item, luego hago un algoritmo para agruparlos yo mismo. Un ejempl de lo que te digo si yo tengo un llenados agarro la fecha del evento de llenado y le resto el tz luego verifico y es exactamente igual que un reporte en wialon. el algoritmo que te menciono en ejecución no te tomara mas de unas milésimas de segundo.

Posiblemente hay otra solución mas sencilla pero esa fue la forma que encontré yo. Espero te sirva de algo.


Una pregunta, en que formato pasas la fecha, unixtime gmt0 o unixtime gmt-5 (ciudad de mexico), he intentado pasando de las dos manera, sumando y restando la tz y no logro tener el resultado exacto del reporte de la plataforma, lo raro es que algunos registros si coinciden con el reporte.

Tambien veo que cuando paso el tiempo en gmt-5 me aparece una fila de mas en el resultado.  Podrías compartirme algún ejemplo que hayas realizado.

Porque si copio la consulta(gmt-5) en el postman o navegador si me devuelve el resultado correcto.

Saludos!

1. tz tenes que tratarlo con la siguiente función

function getTz($_tz){
   return ((($_tz)&(0xffff))|(0xffff0000));
}

2. yo uso la función strtotime: http://php.net/manual/es/function.strtotime.php
si mi fecha es "2017-07-21 13:10:00" esta función me devuelve el unix timestamp de la misma.

3. Tz ya convertido a timestamp Unix con la función del punto uno lo vas a restar a los elementos que vengan en tu solicitud de los resultados de la tabla.

Te adjunto una clase que yo uso para obtener los llenados de combustible el constructor recibe una instancia de la clase wialon.

Post's attachments

Attachment icon llenados de combustible.rar 1.53 kb, 205 downloads since 2017-07-21