Unix Timestamp

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Unix Timestamp

31 Mar 2016, 02:10

Hallo zusammen,

hatte einer von euch schon mal das Problem einen solchen Timestamp in ein lesbares format bringen zu müssen?

Beispiel: 1457964343 = Realzeit: 14.03.2016 - 15:05:43
Beispiel: 1459402085 = Realzeit: 31.03.2016 - 07:28:05

Kann man schön hier umrechnen: http://www.unixtime.de/

Wie könnte man das in AHK lösen damit auch die Urzeit 100%ig stimmt?

MfG
fump
User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: Unix Timestamp

31 Mar 2016, 02:21

Hab da was gefunden im alten Forum:
https://autohotkey.com/board/topic/2486-code-to-convert-fromto-unix-timestamp/

Echt mega kompliziert das ganze hin und her gerechne...

EDIT:

Na so kompliziert dann auch nicht...

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

Last edited by fump2000 on 31 Mar 2016, 02:39, edited 1 time in total.
User avatar
jNizM
Posts: 2318
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Unix Timestamp

31 Mar 2016, 03:25

Code: [Select all] [Download] GeSHi © Codebox Plus

MsgBox % unix_convert(1459402085, "dd.MM.yyyy - HH:mm:ss")    ; ==> 31.03.2016 - 06:28:05

unix_convert(unix, format) {
real := 19700101000000 ; Beginn der UNIX Zeitrechnung (01.01.1970)
real += unix, s ; + Anzahl an Sekunden vom UNIX-Timestamp
real += 1, h ; + 1 Stunde für UTC+1 (MET)
FormatTime, output, % real, % format ; Formartiert mit Datum & Uhrzeit
return output
}
[AHK] 1.1.29.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
just me
Posts: 5433
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Unix Timestamp

31 Mar 2016, 03:40

Code: [Select all] [Download] GeSHi © Codebox Plus

#NoEnv
UTCDiff := A_Now ; braucht man nicht, wenn UTCDiff leer ist!
UTCDiff -= A_NowUTC, H
MsgBox, %UTCDiff%
ExitApp
User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: Unix Timestamp

31 Mar 2016, 05:04

@just me
das löst das "Sommerzeitproblem" richtig? Sprich in der Winterzeit ist das Ergbnis 1 wo jetzt eine 2 kommt. Korrekt?
just me
Posts: 5433
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Unix Timestamp

31 Mar 2016, 05:18

Hallo fump,

jein, das sollte nur zeigen, dass man nicht einfach immer 1 Stunde addieren kann. Die berühmten 'Unix Time Stamps' beziehen sich immer auf die UTC (Universal Time, Coordinated). Die Differenz zwischen UTC und lokaler Zeit verändert sich im Laufe des Jahres durch die unerquickliche und überflüssige Sommerzeit. Deshalb sind die meisten der von Dir gefundenen Funktionen 'echt mega kompliziert'.

Glücklicherweise tickt die interne Uhr bei Windows Rechnern ebenfalls in UTC. Und es gibt API-Funktionen zum Umrechnen zwischen beiden Welten:

Code: [Select all] [Expand] [Download] GeSHi © Codebox Plus

User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: Unix Timestamp

31 Mar 2016, 05:35

Danke!

Angenommen, ich lasse den User per DateTime control ein Datum vorgeben welches in einen Unix Timestamp umgerechnet werden soll.
Muss ich dann die Sommerzeit wieder rausrechnen? Ich mein, der User gibt ja z.B. 31.03.2016 10:00 vor. Am Ende sollte dies ja auch wieder raus kommen...

Dann muss ich den User darauf hinweisen, dass seine Eingabe im UTC Zeitformat erfolgen muss. Das wäre wohl am einfachsten oder?
User avatar
jNizM
Posts: 2318
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Unix Timestamp

31 Mar 2016, 05:40

Könnte man die Sommer-/Winterzeit Berechnung so lösen?

Code: [Select all] [Download] GeSHi © Codebox Plus

MsgBox % unix_convert(1459402085, "dd.MM.yyyy - HH:mm:ss")    ; ==> 31.03.2016 - 05:28:05 (da Sommerzeit | 06:28:05 bei Winterzeit)

unix_convert(unix, format) {
static MET := ((A_NowUTC - A_Now) // 10000) * 3600 ; Berechne MET (Sommer- / Winterzeit)
real := 19700101000000 ; Beginn der UNIX Zeitrechnung (01.01.1970)
real += unix, s ; + Anzahl an Sekunden vom UNIX-Timestamp
real += MET, h ; Kalkuliere Sommer- / Winterzeit mit ein
FormatTime, output, % real, % format ; Formartiert mit Datum & Uhrzeit
return output
}


edit... hmn... nich ganz
[AHK] 1.1.29.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
User avatar
fump2000
Posts: 313
Joined: 04 Oct 2013, 17:31

Re: Unix Timestamp

31 Mar 2016, 05:47

Auf http://www.unixtime.de/ ergibt 1459402085 = 31.03.2016 - 07:28:05
Der TimeStamp stammt aus einem LoginSystem unserer DSL Anschlüsse und beschreibt den letzten Login des Routers.

Der Kunde hat in diesem Fall, den Router ungefähr um diese Zeit neu gestartet. Der TimeStamp passt also.
just me
Posts: 5433
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Unix Timestamp

31 Mar 2016, 06:14

@jNizM: (A_NowUTC - A_Now) gibt ja nur die Differenz für den heutigen Tag (31.03.2016 = Sommerzeit) zurück. Wenn der Zeitstempel aber dann aber z.B. auf den 14.03.2016 zeigt, hilft das nicht weiter.
User avatar
jNizM
Posts: 2318
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Unix Timestamp

31 Mar 2016, 06:16

Ach, spätestens 2038 ist es mit der Unixzeit sowieso vorbei :P (32-Bit)
wiki/Unixzeit#Jahr-2038-Problem
[AHK] 1.1.29.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you
just me
Posts: 5433
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Unix Timestamp

31 Mar 2016, 06:19

@fump2000: Wenn ihr wisst, dass es sich um Unix-Zeit handelt, ist es eigentlich auch nicht so schwer, die passende Differenz anhand des Datums im Kopf zu addieren. Das überlebt dann auch das Jahr 2038. ;)
User avatar
jNizM
Posts: 2318
Joined: 30 Sep 2013, 01:33
GitHub: jNizM
Contact:

Re: Unix Timestamp

31 Mar 2016, 06:22

Vielleicht sind wir ja 2038 schon bei 128-Bit oder 256-Bit angekommen
[AHK] 1.1.29.01 x64 Unicode | [WIN] 10 Pro (Version 1803) x64 | [GitHub] Profile
Donations are appreciated if I could help you

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 5 guests