Español
Fuente/ Codesnippets

Unix Time Stamp (Sekunden seit 01.01.1970) en lesbares Datum umwandeln

 

Sven
Bader
Kann el XProfan wirklich no? Auch en el Foro Yo sólo Lösungen con komplizierten Berechnungen gefunden. Diese Solución hier verwendet el Windows API. Lo funktioniert problemlos auch en alten XProfan Versionen.

UPDATE: uno kann nun auch una lesbares Datum en una Timestamp konvertieren

UPDATE 2: Bereiche voluntad ordentlich freigegeben, neuere XProfan Versionen trabajo nun auch con QuadInt y así con Daten encima 2038 hinaus, ältere XProfan Versionen obtener una 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

    Parámetros dateString$
    Declarar systemTime#,  datePart$, timePart$, fileTime#
    Dim systemTime#, SYSTEMTIME
    Dim fileTime#,8
    datePart$ = Substr$(dateString$,1," ")'Datum
    timePart$ = Substr$(dateString$,2," ")'Uhrzeit
    systemTime#.y% = Val(Substr$(datePart$,1,"-"))// Jahr
    systemTime#.m% = Val(Substr$(datePart$,2,"-"))// Monat
    systemTime#.d% = Val(Substr$(datePart$,3,"-"))// Tag
    systemTime#.h% = Val(Substr$(timePart$,1,":"))// Stunde
    systemTime#.i% = Val(Substr$(timePart$,2,":"))// Minute
    systemTime#.s% = Val(Substr$(timePart$,3,":"))// Sekunde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
     $IFDEF VER12.0
    Declarar Quad unixTimeQuad
    RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
    Disponer fileTime#, systemTime#
    Volver unixTimeQuad
     $ELSE
    'Achtung Quadint, el funktioniert sólo a 2038!
    Declarar unixTime&, unixTime#
    Dim unixTime#,8
    RtlTimeToSecondsSince1970(fileTime#,unixTime#)
    unixTime& = Largo(unixTime#,0)
    Disponer fileTime#, systemTime#, unixTime#
    Volver unixTime&
     $ENDIF

ENDPROC

Proc UnixTime2Date

    Parámetros fileTime&
    Declarar fileTime#, t#, output$
    Dim fileTime#,8
    Dim 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%)
    Disponer t#, fileTime#
    Volver  output$

ENDPROC

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




Georg
Teles
Interessant,

funktioniert problemlos con 8, 10, x2 y x4 en cada Fall
 
Alle Sprachen
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

23.05.2024  
 




Jens-Arne
Reumschüssel
¡Hola,

muy interessant! Kann uno determinado veces bien uso.

Kleine Anmerkung: Yo weiß no, si tan bueno es, Zeiger en lokal deklarierte Bereichsvariablen como Proc-Ergebnisse zurückzugeben. El voluntad así nirgends mehr disposed (=Speicherleck, jedenfalls mindestens während el Programmlaufzeit, sofern XProfan oder Windows el beim Programmende behebt, sonst permanent, a el Computer neu comenzó se).

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: El neuste Versión befindet se en el Original-Contribución bastante oben!

Gracias para el Feedback Jens-Arne!

Yo fand el Zwischenschritte como Función bastante nett aber letztendlich braucht uno ellos no y lo se lesbarer y leichter utilizarse sin:
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

    Parámetros dateString$
    Declarar systemTime#,  datePart$, timePart$, fileTime#, filetime&, unixTime&, unixTime#
    Dim systemTime#, SYSTEMTIME
    Dim fileTime#,8
    Dim unixTime#,8
    datePart$ = Substr$(dateString$,1," ")'Datum
    timePart$ = Substr$(dateString$,2," ")'Uhrzeit
    systemTime#.y% = Val(Substr$(datePart$,1,"-"))// Jahr
    systemTime#.m% = Val(Substr$(datePart$,2,"-"))// Monat
    systemTime#.d% = Val(Substr$(datePart$,3,"-"))// Tag
    systemTime#.h% = Val(Substr$(timePart$,1,":"))// Stunde
    systemTime#.i% = Val(Substr$(timePart$,2,":"))// Minute
    systemTime#.s% = Val(Substr$(timePart$,3,":"))// Sekunde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
    RtlTimeToSecondsSince1970(fileTime#, unixTime#)
    'Achtung Quadint, el funktioniert sólo a 2038!
    unixTime& = Largo(unixTime#,0)
    Disponer fileTime#, systemTime#, unixTime#
    Volver unixTime&

ENDPROC

Proc FileTimeToReadable

    Parámetros fileTime&
    Declarar fileTime#, t#, output$
    Dim fileTime#,8
    Dim 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%)
    Disponer t#, fileTime#
    Volver  output$

ENDPROC

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




Jens-Arne
Reumschüssel
Das sieht doch ya correcto bien de!

Se puede natürlich una Quad nehmen, en auch en 15 Jahren todavía esta a ser:

Declarar Quad unixTimeQuad
RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
Volver 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
Gracias! Yo habe deinen Vorschlag con Compiler-Weiche para neuere XProfan Versionen übernommen y mi por el letzte Actualización irreführenden Funktionsnamen geändert. Der Code es en el Original-Contribución. Aufgrund de Performance y Profano2Cpp Kompatibilität hänge Yo meist incluso todavía en XProfan 11 fest.
 
06.07.2024  
 




Jens-Arne
Reumschüssel
Yo habe veces una kleine DLL para el Nutzung de QuadInts en XProfan a Versión 11 geschrieben, siehe hier:  [...] 

Damit debería uno auch para ältere Profano-Versionen Su schönen UnixTime-Code zukunftsfähig hacer puede. Lo se sí überwiegend en Vergleiche de solchen Veces ir, y el kann el 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
Hier una Versión, el para alte Profane QuadInt.dll nutzt. Das ha auch el Vorteil, dass el Ergebnis no negativo dargestellt se (LongInt es a para letzten Bit ausgenutzt y XProfan nunmal signed), qué a Visualisierung el Sekunden seit el 01.01.1970 no hilfreich es.
 $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

    Parámetros dateString$
    Declarar systemTime#,  datePart$, timePart$, fileTime#
    Dim systemTime#, SYSTEMTIME
    Dim fileTime#,8
    datePart$ = Substr$(dateString$,1," ")'Datum
    timePart$ = Substr$(dateString$,2," ")'Uhrzeit
    systemTime#.y% = Val(Substr$(datePart$,1,"-"))// Jahr
    systemTime#.m% = Val(Substr$(datePart$,2,"-"))// Monat
    systemTime#.d% = Val(Substr$(datePart$,3,"-"))// Tag
    systemTime#.h% = Val(Substr$(timePart$,1,":"))// Stunde
    systemTime#.i% = Val(Substr$(timePart$,2,":"))// Minute
    systemTime#.s% = Val(Substr$(timePart$,3,":"))// Sekunde
    systemTime#.millisecond% = 0// Millisekunde
    SystemTimeToFileTime(systemTime#, fileTime#)
     $IFDEF VER12.0
    Declarar Quad unixTimeQuad
    RtlTimeToSecondsSince1970(fileTime#, Addr(unixTimeQuad))
    Disponer fileTime#, systemTime#
    Volver unixTimeQuad
     $ELSE
    'Achtung Quadint, el funktioniert sólo a 2038!
    Declarar unixTime&, unixTime#
    Dim unixTime#,8
    RtlTimeToSecondsSince1970(fileTime#,unixTime#)
    RtlTimeToSecondsSince1970(fileTime#,QuadAddr(1))
    unixTime& = Largo(unixTime#,0)
    Disponer fileTime#, systemTime#, unixTime#
    Volver unixTime&
     $ENDIF

ENDPROC

Proc UnixTime2Date

    Parámetros fileTime&
    Declarar fileTime#, t#, output$
    Dim fileTime#,8
    Dim 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%)
    Disponer t#, fileTime#
    Volver  output$

ENDPROC

Cls
Imprimir UnixTime2Date(2504776539)
 $IFDEF VER12.0
Imprimir Date2UnixTime("2049-05-16 11:15:39")
 $ELSE
InitQuadInt(1)
Date2UnixTime("2049-05-16 11:15:39")
Imprimir QuadGetStr(1)
 $ENDIF
WaitKey
End
 
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


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

540 Views

Untitledvor 0 min.
Gast.0815 vor 27 Tagen
Georg Teles11.08.2024
ScanMaster07.08.2024
ByteAttack20.07.2024
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie