DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > localtime() gmtime() sas/c | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2008-11-27, 19:44 h selco Posts: 64 User |
Hi, ich bin gerade über ein Zeitproblem gestoßen... Ich habe in Prefs/Locale (OS3.9) die Zeitzone für Deutschland eingestellt. ("1 Stunde auf GMT") und in prefs/time die Zeit richtig gestellt. Jetzt habe ich ein Programm, welches die Zeit braucht. time_t timer; struct tm *tm; time(&timer); tm=localtime(&timer); printf("%2d:%02d:%02dn",tm->tm_hour, tm->tm_min, tm->tm_sec); Das bringt die Ausschrift "19:17:15", (so spät ist es auch wirklich gerade) Also OK. Ich bracuhe aber GMT, also verwende ich statt localtime() die Funktion gmtime() Das bringt die Ausschrift "1:17:39", liegt also ein paar Stunden danben. Ich hätte 18:17 erwartet, also eine Stunde weniger, statt dessen bekomme ich 5 Stunden mehr??? Mache ich etwas falsch? Hat SAS/C da einen Fehler? Wenn ja, gibt es einen workaround oder patch? Gibt es einen offiziellen Weg, das richtig zumachen? MfG selco, http://selco.da.ru [ - Answer - Quote - Direct link - ] |
2008-12-02, 10:20 h Wishmaster Posts: 140 User |
@selco: Da ich SAS/C nicht nutze, kann ich nichts Genaues dazu sagen. Vielleicht musst du irgenwdie die Zeitzone einstellen. -- Pegasos MorphOS [ - Answer - Quote - Direct link - ] |
2008-12-08, 09:12 h gni Posts: 1106 User |
Zitat: Du hast keine globale Umgebungsvariable TZ gesetzt, deshalb bekommst Du den SAS/C Defaultwert für _TZ. Das steht alles im Guide unter Zeitfunktionen/tzset. [ - Answer - Quote - Direct link - ] |
2008-12-08, 09:59 h Thore Posts: 2266 User |
Um die Variable TZ zu setzen machst Du folgendes: Beispiel: setenv TZ EST+05 wobei es folgende Kürzel gibt: EST = Eastern Standard Time EDT = Eastern Daylight Time CST = Central Standard Time CDT = Central Daylight Time Möglicheriweise ist es egal welchen string man angibt, aber das Offset ist ausschlaggebend. Stimmt die Zeit dann, kopier die Env-Variable: copy ENV:TZ ENVARC: (Anleitung aus Moontool entnommen)b [ - Answer - Quote - Direct link - ] |
2008-12-08, 13:25 h selco Posts: 64 User |
In welcehm Guide steht die TZ-Erklärung? @Thore: OK, Danke für den Tip. Trotzdem... Wir haben auf dem Amiga den "Landes-Voreinsteller (Locale)" auf dem die Zeitzone auf der Landkarte angeklickt wird. Und dann soll anschließen noch per hand eine Umgebungsvarianle gesetzt werden??? Find ich nicht gut ;-) Ich habe jetzt folgende Funktion für SAS/C gebaut, die den Offset zu GMT aus den Locale-Prefs holt. Kommentare sind willkommen! struct tm *gmtime(const time_t *timer) { if(timer) { struct LocaleBase *LocaleBase; ULONG GMTOffset; time_t when=*timer; if ((LocaleBase=(struct LocaleBase *)OpenLibrary("locale.library",38L)) != NULL) { GMTOffset = 60*(OpenLocale(NULL))->loc_GMTOffset; CloseLibrary((struct Library *)LocaleBase); } else { GMTOffset=0; // ok, assume GMT } when+=GMTOffset; return localtime(&when); } else { return NULL; } } MfG selco, http://selco.da.ru [ - Answer - Quote - Direct link - ] |
2008-12-08, 15:15 h Wishmaster Posts: 140 User |
@selco: Locale berücksichtigt die Sommerzeit nicht. Die TZ-Variable wird daher auch von Sommerzeit-Tools, wie SetDST, verwendet. Setze die Variable auf setenv save TZ CET-1 und installiere SetDST. Wozu selber eine Funktion bauen, wenn SAS/C schon eine hat? -- Pegasos MorphOS [ Dieser Beitrag wurde von Wishmaster am 08.12.2008 um 15:21 Uhr geändert. ] [ Dieser Beitrag wurde von Wishmaster am 08.12.2008 um 15:22 Uhr geändert. ] [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > localtime() gmtime() sas/c | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |