| |
|
|
![Christian Schneider: 24.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | GetUnixtime() erstellt de el aktuellen Systemzeit una Unix-Timestamp [...] (Sekunden seit 01.01.1970 0:00 Uhr) ->Rückgabewert: Int
UnixToUTC() wandelt una Timestamp en UTC-Tiempo [...] ![](.././../../i/lnk.gif) -> Parámetro: Timestamp (Int) -> Rückgabewert: String (Formato: TTMMJJSSmmss)
UnixToLocal() wandelt una Timestamp en lokale Systemzeit -> Parámetro: Timestamp (Int) -> Rückgabewert: String (Formato: TTMMJJSSmmss) KompilierenMarcaSeparaciónDefinitionen
Def GetSystemTime(1) !"Kernel32.dll","GetSystemTime"
Def SystemTimeToTzSpecificLocalTime(3) !"Kernel32.dll","SystemTimeToTzSpecificLocalTime"
Programm start
CLS
var timestamp% = GetUnixtime()
Print "Timestamp: "+str$(timestamp%)
var time_utc$ = UnixToUTC(timestamp%)
Print "UTC-Zeit: "+left$(time_utc$,2)+"."+mid$(time_utc$,3,2)+"."+mid$(time_utc$,5,4)+" - "+mid$(time_utc$,9,2)+":"+mid$(time_utc$,11,2)+":"+mid$(time_utc$,13,2)
var time_lokal$ = UnixToLocal(timestamp%)
Print "Lokalzeit: "+left$(time_lokal$,2)+"."+mid$(time_lokal$,3,2)+"."+mid$(time_lokal$,5,4)+" - "+mid$(time_lokal$,9,2)+":"+mid$(time_lokal$,11,2)+":"+mid$(time_lokal$,13,2)
Waitkey
Programm ende
Proc GetUnixtime
Declare SYSTEMTIME#
Dim SYSTEMTIME#,16
Declare ut_Jahr%,ut_Monat%,ut_Tag%,ut_Stunde%,ut_Minute%,ut_Sekunde%
var ut_schalttag%=0
Declare tage_bis_monatsanfang%[12]
tage_bis_monatsanfang%[0]=0
tage_bis_monatsanfang%[1]=0
tage_bis_monatsanfang%[2]=31
tage_bis_monatsanfang%[3]=59
tage_bis_monatsanfang%[4]=90
tage_bis_monatsanfang%[5]=120
tage_bis_monatsanfang%[6]=151
tage_bis_monatsanfang%[7]=181
tage_bis_monatsanfang%[8]=212
tage_bis_monatsanfang%[9]=243
tage_bis_monatsanfang%[10]=273
tage_bis_monatsanfang%[11]=304
tage_bis_monatsanfang%[12]=334
GetSystemTime(SYSTEMTIME#)
ut_Jahr%=@Word(SYSTEMTIME#,0)
ut_Monat%=@Word(SYSTEMTIME#,2)
ut_Tag%=@Word(SYSTEMTIME#,6)
ut_Stunde%=@Word(SYSTEMTIME#,8)
ut_Minute%=@Word(SYSTEMTIME#,10)
ut_Sekunde%=@Word(SYSTEMTIME#,12)
if (ut_monat%>2) & (ut_jahr% MOD 4 =0) & (ut_jahr% MOD 100 <> 0)
ut_schalttag%=1
elseif (ut_monat%>2) & (ut_jahr% MOD 400 = 0)
ut_schalttag%=1
endif
DISPOSE SYSTEMTIME#
Return ((tage_bis_monatsanfang%[ut_Monat%]*24*60*60) + (ut_Tag%-1)*24*60*60)+ (ut_Sekunde% + ut_Minute%*60 + ut_Stunde%*60*60) + ((ut_Jahr%-1970) * 365 * 24*60*60 + ((((ut_Jahr%-1)-1968)4 - ((ut_Jahr%-1)-1900)100 + ((ut_Jahr%-1)-1600)400)*24*60*60))+(ut_schalttag%*24*60*60)
Endproc
Proc UnixToUTC
Parameters ut_timestamp%,ut_mode%
Declare ut_schaltjahr%,ut_schalttage%,ut_wochentag%
Declare ut_jahr%,ut_monat%,ut_tag%,ut_stunde%,ut_minute%,ut_sekunde%
if ut_mode%=1
select ((ut_timestamp% 86400) mod 7)
caseof 1 Freitag
ut_wochentag%=5
caseof 2 Samstag
ut_wochentag%=6
caseof 3 Sonntag
ut_wochentag%=0
caseof 4 Montag
ut_wochentag%=1
caseof 5 Dienstag
ut_wochentag%=2
caseof 6 Mittwoch
ut_wochentag%=3
caseof 7 Donnerstag
ut_wochentag%=4
endselect
endif
ut_jahr%=ut_timestamp% (365*24*60*60) + 1970
ut_schalttage%=(((ut_Jahr%-1)-1968)4 - ((ut_Jahr%-1)-1900)100 + ((ut_Jahr%-1)-1600)400)
while (ut_timestamp%-(((ut_jahr%-1970)*365+ut_schalttage%)*24*60*60)+3600) < 0
case (ut_timestamp%-(((ut_jahr%-1970)*365+ut_schalttage%)*24*60*60)+3600) < 0:ut_jahr%=ut_jahr%-1
endwhile
if (ut_jahr% MOD 4 =0) & (ut_jahr% MOD 100 <> 0)
ut_schaltjahr%=1
elseif (ut_jahr% MOD 400 = 0)
ut_schaltjahr%=1
endif
ut_timestamp%=(ut_timestamp%-(((ut_jahr%-1970)*365+ut_schalttage%)*24*60*60))
Select (ut_timestamp% (24*60*60) + 1)
CaseOF > 334+ut_schaltjahr%
ut_monat%=12
ut_timestamp%=ut_timestamp%-((334+ut_schaltjahr%)*24*60*60)
CaseOF > 304+ut_schaltjahr%
ut_monat%=11
ut_timestamp%=ut_timestamp%-((304+ut_schaltjahr%)*24*60*60)
CaseOF > 273+ut_schaltjahr%
ut_monat%=10
ut_timestamp%=ut_timestamp%-((273+ut_schaltjahr%)*24*60*60)
CaseOF > 243+ut_schaltjahr%
ut_monat%=9
ut_timestamp%=ut_timestamp%-((243+ut_schaltjahr%)*24*60*60)
CaseOF > 212+ut_schaltjahr%
ut_monat%=8
ut_timestamp%=ut_timestamp%-((212+ut_schaltjahr%)*24*60*60)
CaseOF > 181+ut_schaltjahr%
ut_monat%=7
ut_timestamp%=ut_timestamp%-((181+ut_schaltjahr%)*24*60*60)
CaseOF > 151+ut_schaltjahr%
ut_monat%=6
ut_timestamp%=ut_timestamp%-((151+ut_schaltjahr%)*24*60*60)
CaseOF > 120+ut_schaltjahr%
ut_monat%=5
ut_timestamp%=ut_timestamp%-((120+ut_schaltjahr%)*24*60*60)
CaseOF > 90+ut_schaltjahr%
ut_monat%=4
ut_timestamp%=ut_timestamp%-((90+ut_schaltjahr%)*24*60*60)
CaseOF > 59+ut_schaltjahr%
ut_monat%=3
ut_timestamp%=ut_timestamp%-((59+ut_schaltjahr%)*24*60*60)
CaseOF > 31
ut_monat%=2
ut_timestamp%=ut_timestamp%-(31*24*60*60)
Otherwise
ut_monat%=1
Endselect
ut_tag% = ut_timestamp% (24*60*60) + 1
ut_timestamp% = (ut_timestamp%-((ut_tag%-1) * 24*60*60))
ut_stunde% = ut_timestamp% (60*60)
ut_timestamp% = (ut_timestamp%-((ut_stunde%)*60*60))
ut_minute% = ut_timestamp% 60
ut_timestamp% = (ut_timestamp%-((ut_minute%)*60))
ut_sekunde% = ut_timestamp%
ifnot ut_mode%=1
Return @If(ut_tag%<10,"0","")+str$(ut_tag%)+@If(ut_monat%<10,"0","")+str$(ut_monat%)+str$(ut_jahr%)+@If(ut_stunde%<10,"0","")+ str$(ut_stunde%)+@If(ut_minute%<10,"0","")+str$(ut_minute%)+@If(ut_sekunde%<10,"0","")+str$(ut_sekunde%)
else
Return str$(ut_jahr%)+@If(ut_monat%<10,"0","")+str$(ut_monat%)+str$(ut_wochentag%)+@If(ut_tag%<10,"0","")+str$(ut_tag%)+@If(ut_stunde%<10,"0","")+str$(ut_stunde%)+@If(ut_minute%<10,"0","")+str$(ut_minute%)+@If(ut_sekunde%<10,"0","")+str$(ut_sekunde%)
EndIF
Endproc
Proc UnixToLocal
Parameters u2l%
Declare SYSTEMTIME#,SYSTEMTIME2#,u2l_return$
Dim SYSTEMTIME#,16
Dim SYSTEMTIME2#,16
Declare ut_rückg$
ut_rückg$ = UnixToUTC(u2l%,1)
Word SYSTEMTIME#,0=val(left$(ut_rückg$,4))
Word SYSTEMTIME#,2=val(mid$(ut_rückg$,5,2))
Word SYSTEMTIME#,4=val(mid$(ut_rückg$,7,1))
Word SYSTEMTIME#,6=val(mid$(ut_rückg$,8,2))
Word SYSTEMTIME#,8=val(mid$(ut_rückg$,10,2))
Word SYSTEMTIME#,10=val(mid$(ut_rückg$,12,2))
Word SYSTEMTIME#,12=val(mid$(ut_rückg$,14,2))
Word SYSTEMTIME#,14=1
SystemTimeToTzSpecificLocalTime(0,SYSTEMTIME#,SYSTEMTIME2#)
u2l_return$ = @IF(@Word(SYSTEMTIME2#,6)<10,"0","")+str$(@Word(SYSTEMTIME2#,6))+@IF(@Word(SYSTEMTIME2#,2)<10,"0","")+str$(@Word(SYSTEMTIME2#,2))+str$(@Word(SYSTEMTIME2#,0))+@IF(@Word(SYSTEMTIME2#,8)<10,"0","")+str$(@Word(SYSTEMTIME2#,8))+@IF(@Word(SYSTEMTIME2#,10)<10,"0","")+str$(@Word(SYSTEMTIME2#,10))+@IF(@Word(SYSTEMTIME2#,12)<10,"0","")+str$(@Word(SYSTEMTIME2#,12))
Disponer SYSTEMTIME#,SYSTEMTIME2#
Volver u2l_return$
ENDPROC
|
|
|
| |
|
|
|
![Christian Schneider: 24.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | Fehler en el Schaltjahren Fijo |
|
|
| |
|
|
|
![Christian Schneider: 24.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | Jetzt auch andersrum posible (Timestamp -> Realzeit) Umrechnung en Lokalzeit folgt |
|
|
| |
|
|
|
![Dieter Zornow: 24.05.2010](.././../../i/a/101212027948ca98cf1d74c.jpg) Dieter Zornow | mmh, en me kommt el 44.01.2009 fuera, bisschen viel Tage. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 24.05.2010 ▲ |
|
|
|
|
![Christian Schneider: 24.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | Su Antwort ha se desafortunadamente con mi letzten Actualización überschnitten. ¿Puede du el aktuellen Code Por favor, otra vez testen? |
|
|
| |
|
|
|
![iF: 24.05.2010](.././../../i/a/1.gif) | @Christian: Siehe auch UnixTime [...] como native Función después de Presentación de WOD - vlt. para Vergleich. Ein nativer Rückweg alÃ
MKTime fehlt me en xpse todavía. |
|
|
| |
|
|
|
![Christian Schneider: 24.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | Der "Rückweg" liegt en. Siehe UnixToUTC()
Aunque como Mustercode wohl más ungeeignet. Steckt doch el una u otros Workaround con drin. Mir gings hauptsächlich en el Timestamp, Der Rest es más una Nebenprodukt de Basteltrieb ![](.././../../i/s/__upl_ext_1111498557.gif)
Wobei el aktuelle Code en media Tests brauchbare Ergebnisse abliefert
Michaels Code Yo zwischenzeitlich auch entdeckt, allerdings ha mich el Assemblerteil erfolgreich en el Flucht geschlagen ;) |
|
|
| |
|
|
|
![Dieter Zornow: 25.05.2010](.././../../i/a/101212027948ca98cf1d74c.jpg) Dieter Zornow | Geht desafortunadamente siempre todavía no, siehe Bild |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 25.05.2010 ▲ |
|
|
|
|
![iF: 25.05.2010](.././../../i/a/1.gif) | Christian Schneider, Beitrag=57201, Zeitpunkt=24.05.2010
Michaels Code Yo zwischenzeitlich auch entdeckt, allerdings ha mich el Assemblerteil erfolgreich en el Flucht geschlagen ;)
He, Usted necesidad doch sólo Imprimir UnixTime() escribir. ^ ^
Wenn Su UnixToUTC korrekt funktioniert, Yo lo später También me gusta una natives MKTime hacer y lo en XPSE como echte Función integrieren. |
|
|
| |
|
|
|
![Christian Schneider: 25.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | Dieter Zornow, Beitrag=57203, Zeitpunkt=25.05.2010
Geht desafortunadamente siempre todavía no, siehe Bild
Yo habe lo en me otra vez bajo GMT+7 getestet, auch como funktionierts. Sollte also schonmal no a el Zeitzone mentira. Yo podría me theoretisch todavía vorstellen el el Beta eventuell quer schießt. Hab desafortunadamente diesmal el Suscripción soñoliento y kann denke Yo sólo en el Laufe Esta semana así testen. Posesiones dir veces una con 11.2 erstelle exe angehängt.
Editar: Mi natürlich 11.2 |
|
|
| |
|
|
|
![iF: 25.05.2010](.././../../i/a/1.gif) | Usted beachtest ya beim Rechnen, dass 32-Bit para una TimeStamp no siempre reichen necesario !? (überschaue Yo ahora no)
Letzter Anhang funktioniert en me hier en una 32-Bit-XP-Home korrekt. |
|
|
| |
|
|
|
![Christian Schneider: 25.05.2010](.././../../i/a/18480508774b0ae59ac7929.gif) Christian Schneider | IF, Beitrag=57204, Zeitpunkt=25.05.2010
He, Usted necesidad doch sólo Imprimir UnixTime() escribir. ^ ^
Das mag ser, pero yo versuche Schnipsel a vermeiden, el Yo nichtmal en el Ansatz verstehe (Ensamblador..).
IF, Beitrag=57204, Zeitpunkt=25.05.2010
Wenn Su UnixToUTC korrekt funktioniert, Yo lo später También me gusta una natives MKTime hacer y lo en XPSE como echte Función integrieren.
Werde dich como no aufhalten ^ ^
Bis para 19. Januar 2038 debería lo con 32Bit no Problemas geben. |
|
|
| |
|
|