Bonjour à tous,
sur deux machines de production sous IBM AIX (l'une en 5.2 l'autre en 5.3), le code C suivant ne donne pas le même résultat, ce qui est catastrophique car cela induit d'autres problèmes. Voici le problème résumé en quelques lignes de code :
Voici les résultats :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <stdio.h> #include <stdlib.h> #include <time.h> void affiche ( time_t iNbSec ) { struct tm *tmPt = NULL ; tmPt = localtime ( &iNbSec ); tmPt->tm_mon += 1; tmPt->tm_year -= 100; printf( "%2.2d/%2.2d/%2.2d %2.2d:%2.2d:%2.2d\n", tmPt->tm_mday, tmPt->tm_mon ,tmPt->tm_year,tmPt->tm_hour, tmPt->tm_min, tmPt->tm_sec ); printf( "isdst : %d\n", tmPt->tm_isdst ); } int main () { affiche( 1206832800 ); affiche( 1193520600 ); return 0; }
AIX 5.2 :
AIX 5.3 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 30/03/08 00:20:00 isdst : 0 27/10/07 23:30:00 isdst : 1
Pourtant, la variable TZ est identique sur les deux machines !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 30/03/08 00:20:00 isdst : 0 27/10/07 22:30:00 isdst : 0
La définition de TZ dans /etc/environment est identique sur les deux machines, et un "smit" > "System Environments" > "Change / Show Date and Time" > "Change Time Zone" donne :
AIX 5.2 :
AIX 5.3 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 * Standard Time ID(only alpahabets) [NFT] * Standard Time Offset from CUT([+|-]HH:MM:SS) [-1] Day Light Savings Time ID(only alpahabets) [DFT] Day Light Savings Time Offset from CUT([+|-]HH:MM: [] SS) Start Daylight Savings Day([Mmm.ww.dd|Jn]) [M3.5.0] Start Daylight Savings Time(HH:MM:SS) [02:00] Stop Daylight Savings Day([Mmm.ww.dd|Jn]) [M10.5.0] Stop Daylight Savings Time(HH:MM:SS) [03:00]
De plus, il y a un effet de bord sur l'utilisation de la fonction "localtime" dans cet exemple. Si je ne fais que le second "affiche", il n'y a pas de différence entre les deux machines !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 * Standard Time ID(only alpahabets) [NFT] * Standard Time Offset from CUT([+|-]HH:MM:SS) [-1] Day Light Savings Time ID(only alpahabets) [DFT] Day Light Savings Time Offset from CUT([+|-]HH:MM: [] SS) Start Daylight Savings Day([Mmm.ww.dd|Jn]) [M3.5.0] Start Daylight Savings Time(HH:MM:SS) [02:00] Stop Daylight Savings Day([Mmm.ww.dd|Jn]) [M10.5.0] Stop Daylight Savings Time(HH:MM:SS) [03:00]
Auriez-vous une idée, une piste, une solution ?
Merci.
Partager