Hallo,
ich möchte gerne 2 verschiedene Formate von Zeit & Datum vergleichen.
Ich möchte nämlich einmal ein Wert aus dem Internet auslesen wie z.B. 8:47:03 AM - 02/28/2012
Und dies mit meiner aktuellen Uhrzeit (Amerikanisch) vergleichen.
Es soll mir einfach ein True wiedergeben wenn die Zeit aus dem Internet schon um/gerade ist mit der Zeit vom System.
Gibt es da eine Möglichkeit?
MfG Freaky
Zeit & Datum mit Zeit & Datum vergleichen in 2 verschiedenen Formaten.
-
- [ offen ]
-
Freaky -
28. Februar 2012 um 06:09 -
Geschlossen -
Erledigt
-
-
Gibt es da eine Möglichkeit?
[autoit]
Ja, benutze einfach in einer eigenen Func die String...-Funktionen um Datum/Zeit in das Format "YYYY/MM/DD HH:MM:SS" umzuwandeln.Danach kannst du mit_DateDiff
[/autoit]die Differenz zu
[autoit]_NowCalc
[/autoit]ermitteln. Wenn die Differenz innerhalb einer gewissen Toleranz ist gibst du mit Return 1 ansonsten 0 zurück,
mfg autoBert
-
Sollte funktionieren
Spoiler anzeigen
[autoit]#include <Date.au3>
[/autoit] [autoit][/autoit] [autoit]$String = "8:47:03 AM - 02/28/2012"
[/autoit] [autoit][/autoit] [autoit]_Umwandlung($String)
[/autoit] [autoit][/autoit] [autoit]Func _Umwandlung($String)
[/autoit]
If StringInStr($String, "PM") Then
$add = 12
Else
$add = 0
EndIf
$Split = StringSplit($String, " ")
If StringLen($Split[1]) = 7 Then
$Time = 0 & $Split[1]
Else
$Time = $Split[1]
EndIf
$Datesplit = StringSplit($Split[$Split[0]], "/")
$Date = $Datesplit[3] & "/" & $Datesplit[1] & "/" & $Datesplit[2]
$Dateadd = _DateAdd("h", $add, $Date & " " & $Time)
If _DateDiff("s", _NowCalc(), $Dateadd) <= 0 Then Return True
Return False
EndFunc ;==>_Umwandlung -
- Offizieller Beitrag
Hi,
[autoit]
Ergebnis ist das selbe - nur kürzer#include <Date.au3>
[/autoit][autoit][/autoit][autoit]$Date = "7:27:03 PM - 02/28/2012"
[/autoit][autoit][/autoit][autoit]
ConsoleWrite(_TimeOver($Date) & @CRLF)Func _TimeOver($_Date)
[/autoit]
Local $Hour = StringRegExpReplace($Date, '(\d{1,2}):\d{1,2}:\d{1,2}\s(A|P)M\s-\s\d{2}/\d{2}/\d{4}','$1')
If StringInStr($_Date, 'P') Then $Hour += 12
If _DateDiff("s", _NowCalc(), StringRegExpReplace($_Date, '(\d{1,2})(:\d{1,2}:\d{1,2})\s(A|P)M\s-\s(\d{2})/(\d{2})/(\d{4})', '$6/$4/$5 ' & $Hour & '$2' )) <= 0 Then Return True
Return False
EndFunc -
Hey,
vielen dank euch beiden.
Welche Lösung ist jetzt eigentlich schneller?
Mir gehts nicht um Millisekunden, eher um einzelne Sekunden.
Wenn es nur im Millisekundenbereich liegt, spielt es ja keine Rolle.
Dank nochmal
mfg Freaky -
[autoit]
TheLuBu = 1.47209999393841 Milisekunden
[/autoit]
BugFix = 0.544615144816291 Milisekunden