Unix Timestamp

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: Unix Timestamp

BeitragSo, Nov 02, 2008 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich versuche micht gerade mit dem Unix Timestamp in BMax.
Habe es mittlerweile geschaft den Integerwert mit time_() herauszubekommen. Mit localtime_() oder strftime_() kann ich ihn auch soweit in ein lesbares Format konvertieren.
Nun habe ich aber noch ein paar Fragen bzw. Probleme.

Hier erstmal mein Code, den ich zusammengesucht habe:

Code: [AUSKLAPPEN]
Local time:Int[2]

time_(time)

Local pointer :Int Ptr = Int Ptr(localtime_(time))
Print "Sec:  "+pointer[0]
Print "Min:  "+pointer[1]
Print "Hour: "+pointer[2]
Print "Day:  "+pointer[3]
Print "Month:"+pointer[4]
Print "Year: "+(pointer[5]+1900)

Print "Timestamp: " + time[0]


Die Ausgaben von Sec, Min, etc. sind alle korrekt. time[0] gibt mir für jetzt z.B.: 1225648930
Wenn ich allerdings (z.B. durch eine Webseite) diesen Integerwert in einer lesbaren Uhrzeit anzeigen lasse, bekomme ich auch 19 Uhr raus. Aber müsste es nicht 18 Uhr sein, also UTC+0?
Bei diesem ganzen Zeitzonen und Sommerzeitzeugs blicke ich noch nicht so ganz durch. :-/
Oder wird von (z.B.) der Webseite automatisch die Zeitzone hinzugerechnet?


Und noch eins: Aus dem BRL.System Code:
Code: [AUSKLAPPEN]
Function CurrentDate$()
   Local   time[256],buff:Byte[256]
   time_(time)
   strftime_(buff,256,"%d %b %Y",localtime_( time ))
   Return String.FromCString(buff)
End Function

Wie groß muss nun wirklich das time-Array sein? Mit der Größe 1 scheint es auch zu funktionieren.

Naja, mal wieder genug gefragt. Wink
Danke fürs lesen. Wink


MfG
#Reaper
  • Zuletzt bearbeitet von #Reaper am Mo, Nov 10, 2008 20:26, insgesamt 2-mal bearbeitet

Ironstorm

Erstklassiger Contest-Veranstalter

Betreff: Re: Unix Timestamp

BeitragMo, Nov 03, 2008 7:54
Antworten mit Zitat
Benutzer-Profile anzeigen
#Reaper hat Folgendes geschrieben:
Die Ausgaben von Sec, Min, etc. sind alle korrekt. time[0] gibt mir für jetzt z.B.: 1225648930
Wenn ich allerdings (z.B. durch eine Webseite) diesen Integerwert in einer lesbaren Uhrzeit anzeigen lasse, bekomme ich auch 19 Uhr raus. Aber müsste es nicht 18 Uhr sein, also UTC+0?
Bei diesem ganzen Zeitzonen und Sommerzeitzeugs blicke ich noch nicht so ganz durch. :-/
Oder wird von (z.B.) der Webseite automatisch die Zeitzone hinzugerechnet?


Bei deinem Computer ist derzeit UTC+1 eingestellt, also Winterzeit in unserer Zone. Unix stellt soweit ich weiß die Zeitzone mit ein.
Die Zonen kannst du dir in Wikipedia natürlich anschauen.

MfG
Ironstorm
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium
 

#Reaper

Newsposter

BeitragMo, Nov 10, 2008 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, ok, danke. Das schein ich nun verstanden zu haben. Wink


Habe nun ein ganz anderes Problem. Und zwar erstmal Code:

Code: [AUSKLAPPEN]
SuperStrict

Local t:Int=123457689
Local t2:Int=time_(Null)

Local k:Int Ptr=Int Ptr(localtime_(Varptr t))
Local k2:Int Ptr=Int Ptr(localtime_(Varptr t2))

Print "S: "+k[0]
Print "M: "+k[1]
Print "H: "+k[2]

Print ""

Print "S: "+k2[0]
Print "M: "+k2[1]
Print "H: "+k2[2]


Also, ich habe hier 2mal verschiedene Timestamps t und t2. Und somit müsste ja auch k[] und k2[] unterschiedliche Werte enthalten. Aber irgendwas mache ich wohl falsch, da nach dem Aufruf von der Zeile
"Local k2:Int Ptr=Int Ptr(localtime_(Varptr t2))"
sich auch k1 verändert. Ich versteh nur nicht warum. Confused


MfG
#Reaper


Edit:
So geht es nun endlich richtig:
Code: [AUSKLAPPEN]
Type tm
   Field tm_sec:Int
   Field tm_min:Int
   Field tm_hour:Int
   Field tm_mday:Int
   Field tm_mon:Int
   Field tm_year:Int
   Field tm_wday:Int
   Field tm_yday:Int
   Field tm_isdst:Int
End Type


Local t:Int = 1234567890
Local t2:Int = time_(Null)

Local k:tm = New tm
   MemCopy( k, localtime_(Varptr t), SizeOf(k) )
Local k2:tm = New tm
   MemCopy( k2, localtime_(Varptr t2), SizeOf(k2) )

Print "S: "+k.tm_hour
Print "M: "+k.tm_min
Print "H: "+k.tm_sec
Print ""
Print "S: "+k2.tm_hour
Print "M: "+k2.tm_min
Print "H: "+k2.tm_sec

Naja, falls dennoch wer weiß, was am oberem Code flasch ist... Danke. Wink

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group