Après windows pour les nuls, voici PB pour les bons (ou presque).

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 03-04-2012 11:33:42

joce77  
Membre
Lieu: Fribourg
Date d'inscription: 30-10-2008
Messages: 7
Pépites: 35
Banque: 0

Convertion dateTime en UTC

Bonjour,

J'ai un problème lorsque j'appelle un webservice java et que je lui passe une datetime par exemple format (dd.MM.yyyy HH:mm:ss) le 06.02.2012 00:00:00, le webservice me retourne la date 05.02.2012 23:00:00. Y a-t-il un moyen de contourner le problème sans devoir ajouter une heure manuellement à ma date ?

Merci de vos réponses.
Jocelyne

Hors ligne

 

#2 03-04-2012 11:43:51

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Convertion dateTime en UTC

Bonjour,

J'ai été confronté à ce problème en écrivant un client de messagerie intégré à notre application, j'ai développé un userobject permettant de réaliser un certain nombre de transformation sur les "datetime" utilisant des fonctions de l'API windows et pour ton problème :

Code: pb

// Conversion d'une heure locale en heure UTC
FUNCTION Boolean TzSpecificLocalTimeToSystemTime(ref  s_time_zone_information lpTimeZoneInformation,  ref s_systemtime lpLocalTime, ref  s_systemtime lpUniversalTime)  LIBRARY "Kernel32.dll"  

Hors ligne

 

#3 03-04-2012 11:45:33

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1120
Pépites: 4,296,080,217
Banque: 9,223,372,036,854,775,808
Site web

Re: Convertion dateTime en UTC

Si le serveur est en UTC, ou si on connaît le décalage de sa timezone, on peut convertir une heure UTC en heure locale (et inversement) avec l'API de windows.

Il y a un exemple sur le Real's HowTo : Get the time and date from a server.


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#4 03-04-2012 17:04:30

joce77  
Membre
Lieu: Fribourg
Date d'inscription: 30-10-2008
Messages: 7
Pépites: 35
Banque: 0

Re: Convertion dateTime en UTC

Merci à Buck et Seki pour vos réponses.

Buck lorsque je déclare la fonction TzSpecificLocalTimeToSystemTime, il me fait un illegal data type sur s_time_zone_information. As-tu une idée pourquoi ?

Hors ligne

 

#5 03-04-2012 17:18:48

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1120
Pépites: 4,296,080,217
Banque: 9,223,372,036,854,775,808
Site web

Re: Convertion dateTime en UTC

joce77 a écrit:

lorsque je déclare la fonction TzSpecificLocalTimeToSystemTime, il me fait un illegal data type sur s_time_zone_information. As-tu une idée pourquoi ?

Moi je sais : c'est une structure et il a oublié de poster sa définition (systemtime aussi, d'ailleurs)
En attendant si ça peut t'aider, elle est documentée chez Microsoft : TIME_ZONE_INFORMATION structure

Edit : pour info le type SYSTEMTIME est également une structure composée de 8 integers, et le type WCHAR en PB équivaut à CHAR (depuis PB10)

Dernière modification par seki (03-04-2012 17:26:51)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#6 04-04-2012 08:29:14

joce77  
Membre
Lieu: Fribourg
Date d'inscription: 30-10-2008
Messages: 7
Pépites: 35
Banque: 0

Re: Convertion dateTime en UTC

Ah ok. Je vais implémenter ces structures.

Hors ligne

 

#7 05-04-2012 09:43:52

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 748
Pépites: 1,028,846
Banque: 171,170,849,654

Re: Convertion dateTime en UTC

Bonjour,

Effectivement, j'ai simplement donné une réponse pour mettre sur la voie :

Code: pb

 $PBExportHeader$s_time_zone_information.srs
global type s_time_zone_information from structure
  long    bias    descriptor "comment" = 
  integer    standardname[32]    descriptor "comment" = "Description de la zone  - Windows API TIME_ZONE_INFORMATION"
  s_systemtime    standarddate    descriptor "comment" = "Date standard - UNICODE - Windows API TIME_ZONE_INFORMATION"
  long    standardbias    descriptor "comment" = 
  integer    daylightname[32]    descriptor "comment" = 
  s_systemtime    daylightdate    descriptor "comment" = 
  long    daylightbias    descriptor "comment" = 
end type

$PBExportHeader$s_systemtime.srs
global type s_systemtime from structure
  uint    wyear    descriptor "comment" = 
  uint    wmonth    descriptor "comment" = 
  uint    wdayofweek    descriptor "comment" = 
  uint    wday    descriptor "comment" = 
  uint    whour    descriptor "comment" = 
  uint    wminute    descriptor "comment" = 
  uint    wsecond    descriptor "comment" = 
  uint    wmilliseconds    descriptor "comment" = 
end type


J'ai regardé mon code tu devras également implémenté les fonction de l'API GetTimeZoneInformationForYear (Vista minimum) ou GetTimeZoneInformation pour renseigner la structure s_time_zone_information avant de pouvoir appeler TzSpecificLocalTimeToSystemTime.

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22