FileDateTime als unix timestamp

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

FileDateTime als unix timestamp

Beitrag von rammi22 »

Hallo,

gibt es eine Funktion, welche mir das Erstellungsdatum einer Datei im unix-Format wiedergibt?

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)
  
  MsgBox fileTime
End Sub
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: FileDateTime als unix timestamp

Beitrag von F3K Total »

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
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: FileDateTime als unix timestamp

Beitrag von rammi22 »

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

Also, native gibt es da nix?
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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
Zuletzt geändert von Karolus am Mo, 19.09.2022 20:48, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: FileDateTime als unix timestamp

Beitrag von rammi22 »

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?
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: FileDateTime als unix timestamp

Beitrag von rammi22 »

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.
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: FileDateTime als unix timestamp

Beitrag von Hiker »

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.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
rammi22
****
Beiträge: 126
Registriert: Mo, 26.03.2012 02:59

Re: FileDateTime als unix timestamp

Beitrag von rammi22 »

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?
Gruss Rammi
----------------------------------------------------
Linux 22.04 | Win11 | LibreOffice 7.3.5.2
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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…
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: FileDateTime als unix timestamp

Beitrag von Hiker »

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...
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: FileDateTime als unix timestamp

Beitrag von Karolus »

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?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten