| |
|
|
- Página 1 - |
|
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 [...] -> 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
|
|
|
| |
|
|
|
| |
|
- Página 1 - |
|
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 ▲ |
|
|
|
|
| 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 | 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 |
|
|
| |
|
|
|
| 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 | 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. |
|
|
| |
|
|
| |
|
- Página 2 - |
|
|
| >> el Yo nichtmal en el Ansatz verstehe (Ensamblador..).
Nene Yo glaube wir reden aneinander vorbei. KompilierenMarcaSeparación ... y el wars auch ya.
Como es nix con Ensamblador - puede ser simplemente así escribir - Por favor, vlt. una vez ausprobieren. |
|
|
| |
|
|
|
Christian Schneider | Aunque, pensamiento du beziehst dich en el Codevorlage de Michael. Werde Yo (si yo el Ganze zeitkritischer benötigen debería) en él zurückkommen. |
|
|
| |
|
|
|
| Tuve Michaels Code como Presentación genutzt (si auch algunos cambios notwendig waren) para Einbau el Función UnixTime [...] como "echte" native Función - es como Usted sagst para zeitkritische Dinge super oder si uno esta Función en Hilos/ CallBacks nutzen mag. Mein Gedanke war sólo, dass Usted el Ergebnis el una Función para Vergleich con el Ergebnis el otro Función nutzen kannst. |
|
|
| |
|
|
|
Christian Schneider | Posesiones veces verglichen. Entweder va mi Función en 286 Sekunden después de, oder deine antes
Posesiones ahora otra vez folgende Página para Vergleich rangezogen: [...] Laut denen scheint mein Valor a stimmen
Werde heute Abend otra vez schauen wo lo como u.U. klemmt. |
|
|
| |
|
|
|
| Ein Grund, por qué ego Vergleichen para wichtig sólo - irgendwo es sí siempre una Bug. ^ ^ |
|
|
| |
|
|
|
Dieter Zornow | Sí du hast bastante, lo liegt a Beta Versión de XProfan, habe el código gerade veces con 11.2 getestet, Ergebnis scheint ok. Das muss se auch Roland anschauen, qué como en 12 sale mal. |
|
|
| 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 ▲ |
|
|
|
|
RGH | Dieter Zornow, Beitrag=57219, Zeitpunkt=25.05.2010
Sí du hast bastante, lo liegt a Beta Versión de XProfan, habe el código gerade veces con 11.2 getestet, Ergebnis scheint ok. Das muss se auch Roland anschauen, qué como en 12 sale mal.
Sí, XProfan 12ß ha todavía una Problema, si SELECT en una QuadInt trifft. (Ein Ergebnis uno ganzzahligen Division es una QuadInt.) Workaround a para nächsten Subscriptionsrelease siehe hier: [...]
Saludo Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 26.05.2010 ▲ |
|
|
|