Bonjour à tous,
Je bute depuis quelques jours sur un problème qui me semblait tout simple au début, et qui en fait soit ne l'est pas tellement, soit est révélateur de mon incompétence. Comme je préfère me dire que je ne suis pas totalement incompétent, on va partir du principe que le problème n'est pas super simple.
Je récupère des données d'une base postGres, avec un dataSet contenant une requête directe vers la base dans le rptdesign.
Les données enregistrées en base contiennent des dates. Je voudrais faire un groupe dans mon tableau de résultats sur une de ces dates, et regrouper les données par jour, dans le fuseau horaire demandé (paramètre d'entrée).
Cas concret : je demande toute les données du 04/10/2013 dans le fuseau Europe/Paris : je reçois tout plein de données, dont la fameuse date, au format date-time. Mais certaines de ces données sont datées du 04/10/2013 00h37.
Or j'ai demandé à Birt de grouper mes données sur le champ date, à qui je fais évidemment subir quelques modifications, étant donné qu'il ne faut prendre en compte ni les heures, ni les minutes, ni les secondes.
Je lui demande donc de grouper sur l'expression suivante :
BirtDateTime.year(row["dateClass"])+"/"+BirtDateTime.month(row["dateClass"])+"/"BirtDateTime.day(row["dateClass"])
Et forcément, il ne prend pas en compte le fuseau horaire (j'ai vérifié en regardant les sources du code de ces fonctions).
Du coup, je me retrouve avec un groupe de données du 03/10/2013 avec quelques lignes, qui pourtant affichent bien dans le tableau une date du 04/10, étant donné que le formatage de date fonctionne bien et prend en compte le fuseau horaire fourni. Malheureusement, on ne peut pas appliquer de formatage dans la définition des groupes.
J'ai tenté plein d'autres solutions : les fonctions javascript natives disponibles getDate(), getMonth(), getYear() indiquent dans leur javadoc qu'elles expriment le nombre retourné en utilisant le temps local, mais ça ne fonctionne visiblement pas.
Dans le package BirtDateTime, le plus rageant, c'est que les fonctions DiffXXX utilisent, elles, le fuseau horaire, mais elles ne me sont d'aucun intérêt.
Quelqu'un aurait-il une solution miracle à proposer ? (ou alors pourrait me faire remarquer rapidement que je suis un boulet parce que je suis passé à côté de LA solution triviale, évidente, et idéale ?)
Merci d'avance.
Partager