Français
Source/ Codesnippets

Unix Time Stamp (Sekunden depuis 01.01.1970) dans lesbares date transformer

 

Sven
Bader
peux cela XProfan wirklich pas? aussi im Forum habe je seulement Lösungen avec komplizierten Berechnungen trouvé. cet Solution ici verwendet qui Windows API. Es funktioniert problemlos aussi dans alten XProfan Versionen.

UPDATE: il peut eh bien aussi un lesbares date dans une Timestamp konvertieren

UPDATE 2: Bereiche volonté réglé freigegeben, neuere XProfan Versionen marcher eh bien aussi avec QuadInt et so avec données sur 2038 hinaus, ältere XProfan Versionen conservé un Fallback
Def RtlSecondsSince1970ToTime(2) !"ntdll.dll", "RtlSecondsSince1970ToTime"
Def RtlTimeToSecondsSince1970(2) !"ntdll.dll", "RtlTimeToSecondsSince1970"
Def FileTimeToSystemTime(2) !"Kernel32.dll", "FileTimeToSystemTime"
Def SystemTimeToFileTime(2) !"Kernel32.dll", "SystemTimeToFileTime"
Struct SYSTEMTIME = y%,m%,w%,d%,h%,i%,s%,millisecond%

Proc Date2UnixTime

    Paramètres dateString$
    Déclarer systemTime#,  datePart$, timePart$, fileTime#
    Faible systemTime#, SYSTEMTIME
    Faible fileTime#,8
    datePart$ = $ Substr(dateString$,1," ")'date
    timePart$ = $ Substr(dateString$,2," ")'l'heure
    systemTime#.y% = Val($ Substr(datePart$,1,"-"))// l'an
    systemTime#.m% = Val($ Substr(datePart$,2,"-"))// mois
    systemTime#.d% = Val($ Substr(datePart$,3,"-"))// journée
    systemTime#.h% = Val($ Substr(timePart$,1,»))// heure
    systemTime#.i% = Val($ Substr(timePart$,2,»))// minute
    systemTime#.s% = Val($ Substr(timePart$,3,»))// seconde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
     $IFDEF VER12.0
    Déclarer Quad unixTimeQuad
    RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
    Dispose fileTime#, systemTime#
    Retour unixTimeQuad
     $ELSE
    'attention Quadint, cela funktioniert seulement jusqu'à 2038!
    Déclarer unixTime&, unixTime#
    Faible unixTime#,8
    RtlTimeToSecondsSince1970(fileTime#,unixTime#)
    unixTime& = Long(unixTime#,0)
    Dispose fileTime#, systemTime#, unixTime#
    Retour unixTime&
     $ENDIF

ENDPROC

Proc UnixTime2Date

    Paramètres fileTime&
    Déclarer fileTime#, t#, output$
    Faible fileTime#,8
    Faible t#, SYSTEMTIME
    RtlSecondsSince1970ToTime(fileTime&, fileTime#)
    FileTimeToSystemTime(fileTime#, t#)
    output$ =  Str$( t#.d%) + "." + Str$(t#.m%)   +"." + Str$(t#.y%)  + " " +   Str$(t#.h%) + » + Str$(t#.i%) +» + Str$(t#.s%)
    Dispose t#, fileTime#
    Retour  output$

ENDPROC

Cls
Imprimer UnixTime2Date(2504776539)
Imprimer Date2UnixTime("2049-05-16 11:15:39")
WaitKey
Fin
 
16.05.2024  
 




Georg
Teles
intéressant,

funktioniert problemlos avec 8, 10, x2 et x4 sur jeden le cas
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

23.05.2024  
 




Jens-Arne
Reumschüssel
Salut,

très intéressant! peux on bestimmt la fois bien verwenden.

Kleine Anmerkung: je ne sais pas, si es si bien ist, aiguille sur bistrot deklarierte Bereichsvariablen comme Proc-Ergebnisse zurückzugeben. qui volonté so nirgends plus disposed (=Speicherleck, jedenfalls mindestens au cours de qui Programmlaufzeit, sofern XProfan ou bien Windows cela beim Programmende behebt, sonst permanent, jusqu'à qui ordinateur récente gestartet wird).

Beste Grüße, Jens-Arne
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
05.07.2024  
 




Sven
Bader
UPDATE: qui neuste Version est sich im Original-Beitrag entier dessus!

merci pour cela Feedback Jens-Arne!

je fand qui Zwischenschritte comme Funktion entier gentil mais letztendlich braucht on vous pas et es wird lesbarer et leichter trop verwenden sans:
Def RtlSecondsSince1970ToTime(2) !"ntdll.dll", "RtlSecondsSince1970ToTime"
Def RtlTimeToSecondsSince1970(2) !"ntdll.dll", "RtlTimeToSecondsSince1970"
Def FileTimeToSystemTime(2) !"Kernel32.dll", "FileTimeToSystemTime"
Def SystemTimeToFileTime(2) !"Kernel32.dll", "SystemTimeToFileTime"
Struct SYSTEMTIME = y%,m%,w%,d%,h%,i%,s%,millisecond%

Proc FileTimeToUnixTime

    Paramètres dateString$
    Déclarer systemTime#,  datePart$, timePart$, fileTime#, filetime&, unixTime&, unixTime#
    Faible systemTime#, SYSTEMTIME
    Faible fileTime#,8
    Faible unixTime#,8
    datePart$ = $ Substr(dateString$,1," ")'date
    timePart$ = $ Substr(dateString$,2," ")'l'heure
    systemTime#.y% = Val($ Substr(datePart$,1,"-"))// l'an
    systemTime#.m% = Val($ Substr(datePart$,2,"-"))// mois
    systemTime#.d% = Val($ Substr(datePart$,3,"-"))// journée
    systemTime#.h% = Val($ Substr(timePart$,1,»))// heure
    systemTime#.i% = Val($ Substr(timePart$,2,»))// minute
    systemTime#.s% = Val($ Substr(timePart$,3,»))// seconde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
    RtlTimeToSecondsSince1970(fileTime#, unixTime#)
    'attention Quadint, cela funktioniert seulement jusqu'à 2038!
    unixTime& = Long(unixTime#,0)
    Dispose fileTime#, systemTime#, unixTime#
    Retour unixTime&

ENDPROC

Proc FileTimeToReadable

    Paramètres fileTime&
    Déclarer fileTime#, t#, output$
    Faible fileTime#,8
    Faible t#, SYSTEMTIME
    RtlSecondsSince1970ToTime(fileTime&, fileTime#)
    FileTimeToSystemTime(fileTime#, t#)
    output$ =  Str$( t#.d%) + "." + Str$(t#.m%)   +"." + Str$(t#.y%)  + " " +   Str$(t#.h%) + » + Str$(t#.i%) +» + Str$(t#.s%)
    Dispose t#, fileTime#
    Retour  output$

ENDPROC

Cls
Imprimer FileTimeToReadable(1715858139)
Imprimer FileTimeToUnixTime("2024-05-16 11:15:39")
Waitkey
Fin
 
05.07.2024  
 




Jens-Arne
Reumschüssel
cela sieht doch déjà richtig bien aus!

il peut naturellement un Quad prendre, um aussi dans 15 Jahren encore dabei trop son:

Déclarer Quad unixTimeQuad
RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
Retour unixTimeQuad
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
06.07.2024  
 




Sven
Bader
merci! j'ai deinen Vorschlag avec Compiler-Weiche pour neuere XProfan Versionen übernommen et mon par cela dernier Update irreführenden Funktionsnamen geändert. qui Code ist im Original-Beitrag. Aufgrund de Performance et qui Profan2Cpp Kompatibilität hänge je meist selbst encore sur XProfan 11 fest.
 
06.07.2024  
 




Jens-Arne
Reumschüssel
j'ai la fois une kleine DLL pour qui Nutzung de QuadInts dans XProfan jusqu'à Version 11 geschrieben, siehe ici:  [...] 

avec cela sollte on aussi pour ältere Profan-Versionen Deinen schönen UnixTime-Code zukunftsfähig faire peut. Es wird oui überwiegend um Vergleiche de solchen Zeiten aller, et qui peux qui DLL problemlos bewerkstelligen.
 
XProfan X4
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
06.07.2024  
 




Jens-Arne
Reumschüssel
ici une Version, qui pour vieille Profane QuadInt.dll utilise. cela hat aussi den Vorteil, dass cela Ergebnis pas négative dargestellt wird (LongInt ist jusqu'à zum letzten Bit ausgenutzt et dans XProfan nunmal signed), quoi zur Visualisierung qui Sekunden depuis dem 01.01.1970 pas hilfreich ist.
 $IFNDEF VER12.0
 $I QuadInt.inc
 $ENDIF
Def RtlSecondsSince1970ToTime(2) !"ntdll.dll", "RtlSecondsSince1970ToTime"
Def RtlTimeToSecondsSince1970(2) !"ntdll.dll", "RtlTimeToSecondsSince1970"
Def FileTimeToSystemTime(2) !"Kernel32.dll", "FileTimeToSystemTime"
Def SystemTimeToFileTime(2) !"Kernel32.dll", "SystemTimeToFileTime"
Struct SYSTEMTIME = y%,m%,w%,d%,h%,i%,s%,millisecond%

Proc Date2UnixTime

    Paramètres dateString$
    Déclarer systemTime#,  datePart$, timePart$, fileTime#
    Faible systemTime#, SYSTEMTIME
    Faible fileTime#,8
    datePart$ = $ Substr(dateString$,1," ")'date
    timePart$ = $ Substr(dateString$,2," ")'l'heure
    systemTime#.y% = Val($ Substr(datePart$,1,"-"))// l'an
    systemTime#.m% = Val($ Substr(datePart$,2,"-"))// mois
    systemTime#.d% = Val($ Substr(datePart$,3,"-"))// journée
    systemTime#.h% = Val($ Substr(timePart$,1,»))// heure
    systemTime#.i% = Val($ Substr(timePart$,2,»))// minute
    systemTime#.s% = Val($ Substr(timePart$,3,»))// seconde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
     $IFDEF VER12.0
    Déclarer Quad unixTimeQuad
    RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
    Dispose fileTime#, systemTime#
    Retour unixTimeQuad
     $ELSE
    'attention Quadint, cela funktioniert seulement jusqu'à 2038!
    Déclarer unixTime&, unixTime#
    Faible unixTime#,8
    RtlTimeToSecondsSince1970(fileTime#,unixTime#)
    RtlTimeToSecondsSince1970(fileTime#,QuadAddr(1))
    unixTime& = Long(unixTime#,0)
    Dispose fileTime#, systemTime#, unixTime#
    Retour unixTime&
     $ENDIF

ENDPROC

Proc UnixTime2Date

    Paramètres fileTime&
    Déclarer fileTime#, t#, output$
    Faible fileTime#,8
    Faible t#, SYSTEMTIME
    RtlSecondsSince1970ToTime(fileTime&, fileTime#)
    FileTimeToSystemTime(fileTime#, t#)
    output$ =  Str$( t#.d%) + "." + Str$(t#.m%)   +"." + Str$(t#.y%)  + " " +   Str$(t#.h%) + » + Str$(t#.i%) +» + Str$(t#.s%)
    Dispose t#, fileTime#
    Retour  output$

ENDPROC

Cls
Imprimer UnixTime2Date(2504776539)
 $IFDEF VER12.0
Imprimer Date2UnixTime("2049-05-16 11:15:39")
 $ELSE
InitQuadInt(1)
Date2UnixTime("2049-05-16 11:15:39")
Imprimer QuadGetStr(1)
 $ENDIF
WaitKey
Fin
 
XProfan X4 * Prf2Cpp * XPSE * JRPC3 * Win11 Pro 64bit * PC i7-7700K@4,2GHz, 32 GB RAM
PM: jreumsc@web.de
07.07.2024  
 



Zum Quelltext


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

799 Views

Untitledvor 0 min.
Sven Bader vor 30 Tagen
HofK09.10.2024
Manfred Barei25.09.2024
Gast.081521.08.2024
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie