FileDateTime als unix timestamp

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: FileDateTime als unix timestamp

Re: FileDateTime als unix timestamp

von Hiker » Mi, 28.09.2022 11:40

Windows hat überall "Systemzeit" = lokale Zeitzone, aber inzwischen kann man dies für Dual-Boot bei Linux bei Installation angebe, so dass Linux kompensiert...

Re: FileDateTime als unix timestamp

von Karolus » Do, 22.09.2022 09:47

Hiker hat geschrieben: Do, 22.09.2022 08:00
Karolus hat geschrieben: Di, 20.09.2022 10:09 ..., die Funktion FileDateTime rechnet das aber """benutzerfreundlich :lol: """ um in das Calc/Basic-Datumsmodell.
Dem Benutzer bleibt es dann überlassen in den ursprünglichen Wert zurückzurechnen.
Ob man unter Windows oder MacOS von "zurückrechnen" reden kann? MacOS ist zwar inzwischen "unixoid", aber ich habe keine Ahnung, was Apple im Detail in seinem HPFS speichert...
unix-epoch war schon etabliert, als Bill Gates verfügbare Software mit heisser Nadel umgestrickt hat, so systemnahe Dinge hat der nicht neu erfunden.
Laut Python-dokumentation ist m_time definiert mit "Zeitpunkt der letzten inhaltlichen Änderung" auch in Windows, MacOs wird nicht explizit erwähnt, daher machen die vmtl. keine Extralocken.
Ein Problem war ja das windows bis mindestens Windows 98 die Systemzeit hart umgestellt hat auf die Lokalzeit.
Ich hatte damals (bis ca. 2012) ein Dualboot-system, bei einem Windows-boot war (scheinbar) alles richtig, nur wenn ich danach Linux gebootet hatte, musste ich jedesmal die Zeit um ein bis zwei Stunden zurückstellen, irgendwann hab ich dann Windows in eine VM gesteckt und hatte fortan ein Linux das immer die richtige Zeit hatte, und auch Sommer/Winterzeit ohne mein Zutun umgestellt hat.
Inzwischen ist auch Windows in der VM längst Geschichte.
Laut deiner Signatur kannst du ja beide Versionen auf Windows vergleichen, ergeben die gleiche oder unterschiedliche Werte?

Re: FileDateTime als unix timestamp

von Hiker » Do, 22.09.2022 08:00

Karolus hat geschrieben: Di, 20.09.2022 10:09 ..., die Funktion FileDateTime rechnet das aber """benutzerfreundlich :lol: """ um in das Calc/Basic-Datumsmodell.
Dem Benutzer bleibt es dann überlassen in den ursprünglichen Wert zurückzurechnen.
Ob man unter Windows oder MacOS von "zurückrechnen" reden kann? MacOS ist zwar inzwischen "unixoid", aber ich habe keine Ahnung, was Apple im Detail in seinem HPFS speichert...

Re: FileDateTime als unix timestamp

von Karolus » Mi, 21.09.2022 11:54

F3K Total hat geschrieben: Mo, 19.09.2022 17:22 Moin, versuch mal:

Code: Alles auswählen

Sub Main
  Dim filePath As String
  Dim fileName As String
  Dim fileTime As String
  
  filePath = "/home/rammi/Schreibtisch/Scanner/scan/"
  fileName = "S30BW-0i22090909391.pdf"
  fileTime = FileDateTime(filePath + fileName)
  UnixTimeStamp =(cdate(fileTime) - 25569)*86400
  MsgBox fileTime
  MsgBox UnixTimeStamp
End Sub
Gruß R
@F3K Total:
Ich möchte keine Haare spalten, aber ich fürchte der Wert der hier zurückgegeben wird ist aus technischer Sicht falsch, weil FileDateTime nicht nur umrechnet ins Calc-schema, sondern auch noch in Lokalzeit umrechnet ??
Da fehlt dann eine im besten Fall Datums/Zeitzonen-unabhängige umrechnung in utc-zeit.
Wenns nur ums vergleichen geht und der Vergleichswert auf die selbe Art ermittelt wird ist es letzlich egal, aber auch die Umrechnerei wäre dann überflüssig…

Re: FileDateTime als unix timestamp

von Karolus » Di, 20.09.2022 11:32

rammi22 hat geschrieben: Di, 20.09.2022 10:14 Und warum benutzt du diesen Beitrag, um deine Ansichten über PHP-Entwickler und deren Unvermögen im Zusammenhang mit Python-Skripten zu manifestieren? Meinst du nicht, das so etwas besser in einer PN diskutiert werden sollte?
sorry das geht jetzt etwas in eine falsche Richtung, ich möchte weder PHP-entwickler im allgemeinen noch dich persönlich angreifen!
per PN? gerne!
rammi22 hat geschrieben: Di, 20.09.2022 10:14 Was ist dein Argument gegen Basic?
Na ja … python wird schon sehr lange mit LO (mitgeliefert |bzw. benutzt LO die Python-umgebung des Betriebsystems***) , zusätzlich gibts inzwischen mit der Erweiterung apso.oxt auch einen gut benutzbaren Dialog zum Verwalten und Organisieren von Python.
Für mich gibts halt im Kontext Datei-TimeStamp oder shell (x y) kein Argument das für Basic spräche.

***das gilt für alle LO-pakete die mit diversen Linux-distributionen ausgeliefert werden.

Re: FileDateTime als unix timestamp

von rammi22 » Di, 20.09.2022 10:14

Karolus hat geschrieben: Di, 20.09.2022 09:13 Dann versuche mal den "Kontext" auf deine Themen seit letzten Samstag zu erweitern.
Was ist dein Argument gegen Basic? Und warum benutzt du diesen Beitrag, um deine Ansichten über PHP-Entwickler und deren Unvermögen im Zusammenhang mit Python-Skripten zu manifestieren? Meinst du nicht, das so etwas besser in einer PN diskutiert werden sollte?

Re: FileDateTime als unix timestamp

von Karolus » Di, 20.09.2022 10:09

Hiker hat geschrieben: Di, 20.09.2022 09:47 Natürlich gibt es entsprechende Funktionen im Quellcode von LO, aber diese "nativen" Funktionen sind nicht von Basic aus ansprechbar.
Natürlich benutzt Basic diese "nativen" Funktionen zum Abfragen der Datei-metadaten, die Funktion FileDateTime rechnet das aber """benutzerfreundlich :lol: """ um in das Calc/Basic-Datumsmodell.
Dem Benutzer bleibt es dann überlassen in den ursprünglichen Wert zurückzurechnen.

Re: FileDateTime als unix timestamp

von Hiker » Di, 20.09.2022 09:47

rammi22 hat geschrieben: Mo, 19.09.2022 18:23....
Also, native gibt es da nix?
Natürlich gibt es entsprechende Funktionen im Quellcode von LO, aber diese "nativen" Funktionen sind nicht von Basic aus ansprechbar.

Und weder BASIC noch UNO sind mit Hinblick auf unixoide Systeme entwickelt worden. Also ist Unix-Timestamp kein default...

Mfg, J.

Re: FileDateTime als unix timestamp

von Karolus » Di, 20.09.2022 09:13

rammi22 hat geschrieben: Di, 20.09.2022 07:23 Und noch weniger erkenne ich einen Kontext zur eigentlichen Frage.
Dann versuche mal den "Kontext" auf deine Themen seit letzten Samstag zu erweitern.

Re: FileDateTime als unix timestamp

von rammi22 » Di, 20.09.2022 07:23

Karolus hat geschrieben: Mo, 19.09.2022 20:45 ...
Du demonstriest das täglich aufs neue indem du hier auf Basic-code bestehst.
Ich kann da jetzt keinen Zusammenhang erkennen, warum "...python ist zu kompliziert für den php-Entwickler" wäre. Und noch weniger erkenne ich einen Kontext zur eigentlichen Frage.

Re: FileDateTime als unix timestamp

von Karolus » Mo, 19.09.2022 20:45

rammi22 hat geschrieben: Mo, 19.09.2022 20:37
Karolus hat geschrieben: Mo, 19.09.2022 19:29 Ich weiss ja, python ist zu kompliziert für den php-Entwickler
Wer sagt/schreibt das?
Du demonstriest das täglich aufs neue indem du hier auf Basic-code bestehst.

Re: FileDateTime als unix timestamp

von rammi22 » Mo, 19.09.2022 20:37

Karolus hat geschrieben: Mo, 19.09.2022 19:29 Ich weiss ja, python ist zu kompliziert für den php-Entwickler
Wer sagt/schreibt das?

Re: FileDateTime als unix timestamp

von Karolus » Mo, 19.09.2022 19:29

Ich weiss ja, python ist zu kompliziert für den php-Entwickler

Code: Alles auswählen

from time import mktime, localtime
print(int(mktime(localtime())))
oder

Code: Alles auswählen

from pathlib import Path
filePath = "/home/rammi/Schreibtisch/Scanner/scan/"
fileName = "S30BW-0i22090909391.pdf"
p = Path(filePath) / fileName
print(f'timestamp: {int(p.stat().st_mtime + 7200)}')
#besser:
print(f'timestamp: {p.stat().st_mtime + 7200: .0f}')
Normalweise basieren unix-timestamps auf utc und nicht auf Lokalzeit?
wie auch immer ich hab mal 2 Stunden (7200sec) dazuaddiert

Re: FileDateTime als unix timestamp

von rammi22 » Mo, 19.09.2022 18:23

F3K Total hat geschrieben: Mo, 19.09.2022 17:22 Moin, versuch mal:
...
Konvertiert, Danke.

Also, native gibt es da nix?

Re: FileDateTime als unix timestamp

von F3K Total » Mo, 19.09.2022 17:22

Moin, versuch mal:

Code: Alles auswählen

Sub Main
  Dim filePath As String
  Dim fileName As String
  Dim fileTime As String
  
  filePath = "/home/rammi/Schreibtisch/Scanner/scan/"
  fileName = "S30BW-0i22090909391.pdf"
  fileTime = FileDateTime(filePath + fileName)
  UnixTimeStamp =(cdate(fileTime) - 25569)*86400
  MsgBox fileTime
  MsgBox UnixTimeStamp
End Sub
Gruß R

Nach oben