Italia
Fonte/ Codesnippets

Datum Timestamp Unix Utc Zeit

 
- Page 1 -



Christian
Schneider
GetUnixtime() erstellt aus der aktuellen Systemzeit einen Unix-Timestamp [...]  (Sekunden seit 01.01.1970 0:00 Uhr)
->Rückgabewert: Int

UnixToUTC() wandelt einen Timestamp in UTC-Zeit [...] 
-> Parameter: Timestamp (Int)
-> Rückgabewert: String (Format: TTMMJJSSmmss)

UnixToLocal() wandelt einen Timestamp in lokale Systemzeit
-> Parameter: Timestamp (Int)
-> Rückgabewert: String (Format: TTMMJJSSmmss)
KompilierenMarkierenSeparieren
Definitionen
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))
    Dispose SYSTEMTIME#,SYSTEMTIME2#
    Return u2l_return$

Endproc

 
XProfan 11| Vista(64) SP2
24.05.2010  
 



 
- Page 1 -



Dieter
Zornow
Geht leider immer noch nicht, siehe Bild

29 kB
Hochgeladen:25.05.2010
Downloadcounter233
Download
 
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 habe ich zwischenzeitlich auch entdeckt, allerdings hat mich der Assemblerteil erfolgreich in die Flucht geschlagen ;)


He, Du brauchst doch nur Print UnixTime() schreiben. ^^

Wenn Dein UnixToUTC korrekt funktioniert, dann würde ich daraus später auch gerne ein natives MKTime machen und es in XPSE als echte Funktion integrieren.
 
25.05.2010  
 




Christian
Schneider
Dieter Zornow, Beitrag=57203, Zeitpunkt=25.05.2010
Geht leider immer noch nicht, siehe Bild


Ich habe es bei mir nochmal unter GMT+7 getestet, auch da funktionierts. Sollte also schonmal nicht an der Zeitzone liegen.
Ich potuto mir theoretisch noch vorstellen das die Beta eventuell quer schießt. Hab leider diesmal die Subscription verschlafen und kann denke ich erst im Laufe der Woche damit testen. Habe dir mal eine mit 11.2 erstelle exe angehängt.

Edit: Meine naturalmente 11.2

1.037 kB
Hochgeladen:25.05.2010
Downloadcounter141
Download
31 kB
Hochgeladen:25.05.2010
Downloadcounter227
Download
 
XProfan 11| Vista(64) SP2
25.05.2010  
 



Du beachtest schon beim Rechnen, dass 32-Bit per einen TimeStamp nicht immer reichen müssen !? (überschaue ich jetzt nicht)

Letzter Anhang funktioniert bei mir hier auf einem 32-Bit-XP-Home korrekt.
 
25.05.2010  
 




Christian
Schneider
iF, Beitrag=57204, Zeitpunkt=25.05.2010
He, Du brauchst doch nur Print UnixTime() schreiben. ^^


Das mag sein, aber ich versuche Schnipsel zu vermeiden, die ich nichtmal im Ansatz verstehe (Assembler..).

iF, Beitrag=57204, Zeitpunkt=25.05.2010
Wenn Dein UnixToUTC korrekt funktioniert, dann würde ich daraus später auch gerne ein natives MKTime machen und es in XPSE als echte Funktion integrieren.


Werde dich da nicht aufhalten ^^

Bis zum 19. Januar 2038 sollte es mit 32Bit keine Probleme geben.
 
XProfan 11| Vista(64) SP2
25.05.2010  
 



 
- Page 2 -


>> die ich nichtmal im Ansatz verstehe (Assembler..).

Nene ich glaube wir reden aneinander vorbei.
KompilierenMarkierenSeparieren
 {$cleq}
cls
print UnixTime()
print test()
WaitINput
End

nproc test//eine einzige nProc im Code reicht aus um den nativen Sprachschatz auch für den nicht-nativen Bereich (print UnixTime()) zu aktivieren.

    return 55

c

... und das wars auch schon.

Da ist nix mit Assembler - kann man einfach so schreiben - bitte vlt. einmal ausprobieren.
 
25.05.2010  
 




Christian
Schneider
Allerdings, dachte du beziehst dich auf die Codevorlage von Michael. Werde ich (wenn ich das Ganze zeitkritischer benötigen sollte) drauf zurückkommen.
 
XProfan 11| Vista(64) SP2
25.05.2010  
 



Ich hatte Michaels Code als Vorlage genutzt (wenn auch ein paar Änderungen notwendig waren) zum Einbau der Funktion UnixTime [...]  als "echte" native Funktion - ist wie Du sagst per zeitkritische Dinge super oder wenn man diese Funktion in Threads/ CallBacks nutzen mag. Mein Gedanke war halt, dass Du das Ergebnis der einen Funktion zum Vergleich mit dem Ergebnis der anderen Funktion nutzen kannst.
 
25.05.2010  
 




Christian
Schneider
Habe mal verglichen. Entweder geht meine Funktion um 286 Sekunden nach, oder deine vor

Habe jetzt nochmal folgende Seite zum Vergleich rangezogen: [...] 
Laut denen scheint mein Wert zu stimmen

Werde heute Abend nochmal schauen wo es da u.U. klemmt.
 
XProfan 11| Vista(64) SP2
25.05.2010  
 



Ein Grund, weshalb ichs Vergleichen per wichtig halt - irgendwo ist ja immer ein Bug. ^^
 
25.05.2010  
 




Dieter
Zornow
Ja du hast recht, es liegt an Beta Version von XProfan, habe den Code gerade mal mit 11.2 getestet, Ergebnis scheint ok.
Das muss sich auch Roland anschauen, was da in 12 schief corre.
 
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
Ja du hast recht, es liegt an Beta Version von XProfan, habe den Code gerade mal mit 11.2 getestet, Ergebnis scheint ok.
Das muss sich auch Roland anschauen, was da in 12 schief corre.


Ja, XProfan 12ß hat noch ein Problem, wenn SELECT auf ein QuadInt trifft. (Ein Ergebnis einer ganzzahligen Division ist ein QuadInt.)
Workaround bis zum nächsten Subscriptionsrelease siehe hier:
[...] 

Saluto
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  
 




Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

20.867 Views

Untitledvor 0 min.
Sven Bader16.05.2024
H.Brill11.11.2022
Jens-Arne Reumschüssel16.05.2021
Thomas Zielinski12.02.2021
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie