Fil d’Ariane du forum – Vous êtes ici :ForumForums techniques: AS/400Convertir horodatage GMT
Vous devez vous identifier pour créer des messages et des sujets.

Convertir horodatage GMT

Bonjour

(sur un iSeries en V7R3M0 )
comment convertir un horodatage GMT  du style "29.09.2023 07:29:19" en un horodatage "Français" ?
sachant que le fuseau horaire n'a pas le même décalage en fonction de l'heure d'été ou d'hiver.

Merci de votre participation

 

Bonjour,

si vous n'avez pas trouvé de solution vous pouvez vous utiliser l'API  QWCCVTDT, par exemple :

**free
ctl-opt dftactgrp(*no) actgrp(*new);

dcl-pr QWCCVTDT extpgm('QWCCVTDT');
input_format char(10) const;
input_variable char(20) const;
output_format char(10) const;
output_variable char(20);
error_code int(10) const;

input_time_zone char(10) const;
output_time_zone char(10) const;
timezone_info char(200);
lengh_of_timezone_info int(10) const;
precision_indicator char(1) const;
end-pr;

dcl-s ts timestamp;
dcl-s utc timestamp;
dcl-s i int(10);

ts = ts_utc_to_job(z'2023-09-29-07.29.19');

utc = z'2023-10-28-20.00.00';
dsply (%char(%date(utc)));
for i = 1 to 10;
ts = ts_utc_to_job(utc);
utc = utc + %hours(1);
endfor;

utc = z'2021-03-27-20.00.00';
dsply (%char(%date(utc)));
for i = 1 to 10;
ts = ts_utc_to_job(utc);
utc = utc + %hours(1);
endfor;
*inlr = *on;

dcl-proc ts_utc_to_job;
dcl-pi *n timestamp;
utcts timestamp value;
end-pi;

dcl-s locts timestamp;

dcl-s utcc char(20);
dcl-s locc like(utcc);
dcl-s tzi char(200);

utcc = %char(utcts:*iso0);
QWCCVTDT('*YYMD':utcc:'*YYMD':locc:0:'*UTC':'*JOB':tzi:%size(tzi):'1');
locts = %timestamp(locc:*iso0);
dsply ('UTC ' + %char(%time(utcts)) + ' = LOC ' + %char(%time(locts)));

return locts;

end-proc;

Bonjour,

je vais regarder cet API..

Merci

On peut aussi utiliser la valeur système QUTCOFFSET qui contient l'écart avec l'heure GMT .

Le format est alphanumérique sur 5 positions : la 1ère position est le signe (+ ou -) ; les 4 dernières positions sont l'écart en HHmm.

Par exemple aujourd'hui sur notre système DSPSYSVAL QUTCOFFSET :

 

Fichiers téléversés :

Bonjour,

Ou avec SQL

exec sql
SET :wgmt =
CURRENT TIMESTAMP - CURRENT TIMEZONE;

Jean

 

Bonjour et merci pour vos réponses.

en fait mon besoin bien "spécifique" n'est pas en temps réel.
c'est à dire que l'horodatage UTC que j'ai a traité  ( pour le comparer à un horodatage français ) est dans le passé
et sur le système il n'y a que la valeur QUTCOFFSET du moment présent !

merci de votre participation