Hallo
wenn ich das NET TIME Kommando ausführe bekomme ich z.B. "4/27/2009 8:35 AM" zurück.
Gibt es eine Autoit Funktion die diese Version von Datum und Zeit in das deutsche Format wandelt?
Danke und Gruß
Hallo
wenn ich das NET TIME Kommando ausführe bekomme ich z.B. "4/27/2009 8:35 AM" zurück.
Gibt es eine Autoit Funktion die diese Version von Datum und Zeit in das deutsche Format wandelt?
Danke und Gruß
Hallo energy98 ,
brauchst du umbedingt die Zeit über NET TIME? Du könntest auch über @HOUR, @MIN usw. die Zeit/Datum selbst zusammenbauen.
Gruß
s.koni
Hallo
ich möchte die Zeit aus mehreren NT-Domänen mit der lokalen Zeit vergleichen.
Ich sag nur "kerberos" ...
Gruß
Hallo ernergy98,
ich hab da mal was zusammengebaut...
$str = "4/27/2009 8:35 PM"
MsgBox(4160, '', "Datum & Uhrzeit: " & _timeconvert($str))
Func _timeconvert($data)
$a_str = StringSplit($str," ")
$d_str = StringSplit($a_str[1],"/")
$z_str = StringSplit($a_str[2],":")
If $a_str[3] = "PM" Then $z_str[1] += 12
$str = $d_str[2]&"."&$d_str[1]&"."&$d_str[3]&" "&$z_str[1]&":"&$z_str[2]
Return($str)
EndFunc
Vielen Dank ist gekauft.
Ich habe noch ein paar Nullen eingebastelt.
$str = "4/7/2009 9:05 AM"
MsgBox(4160, '', "Datum & Uhrzeit: " & _timeconvert($str))
Func _timeconvert($data)
$a_str = StringSplit($str," ")
$d_str = StringSplit($a_str[1],"/")
$z_str = StringSplit($a_str[2],":")
If $a_str[3] = "PM" Then $z_str[1] += 12
If $d_str[2] >= 0 and $d_str[2] <= 9 Then
$d_str[2] = "0" & $d_str[2]
EndIf
If $d_str[1] >= 0 and $d_str[1] <= 9 Then
$d_str[1] = "0" & $d_str[1]
EndIf
If $z_str[1] >= 0 and $z_str[1] <= 9 Then
$z_str[1] = "0" & $z_str[1]
EndIf
$str = $d_str[2]&"."&$d_str[1]&"."&$d_str[3]&" "&$z_str[1]&":"&$z_str[2]
Return($str)
EndFunc
Gruß
Ich hätte StringFormat verwendet:
$str = "4/2/2009 8:3 AM"
MsgBox(4160, '', "Datum & Uhrzeit: " & _timeconvert($str))
Func _timeconvert($data)
$a_str = StringSplit($str, " ")
$d_str = StringSplit($a_str[1], "/")
$z_str = StringSplit($a_str[2], ":")
If $a_str[3] = "PM" Then $z_str[1] += 12
$str = StringFormat('%002i', $d_str[2]) & "." & StringFormat('%002i', $d_str[1]) & "." & $d_str[3] & _
" " & StringFormat('%002i', $z_str[1]) & ":" & StringFormat('%002i', $z_str[2])
Return ($str)
EndFunc ;==>_timeconvert
Überredet! Vielen Dank
Hat jemand eine Idee wie ich mit Autoit eine NTP-Zeit abfrage?
Gruß
kenne keine udf hierfür... aber fang doch einfach die consolenausgabe von net time ab
@oliverh
ich möchte die richtige Zeit abfragen, nicht die die mir eine Windows Domain gibt.
Gruß
welche "richtige" zeit meinst du?!? atomuhrzeit? gkibts nen ntp server den du abfragen willst? ein paar mehr infos wären gut
nachdem ich vorhin etwas "geschlammpt habe
mit den einstelligen Zeiten hier jetzt wenigsten's die AtomUhr...
#include<String.au3>
#include <DATE.au3>
InetGet("http://www.uhrzeit.org/atomuhr.html","Uhrzeit.html",1)
$openfile = FileOpen("Uhrzeit.html",0)
$read_1 = FileRead($openfile)
sleep(4000)
FileClose($openfile)
FileDelete("Uhrzeit.html")
$gettime = _StringBetween($read_1,'<div id="anzeige">','</div>')
;~ GUICtrlSetData($Label1,$gettime[0])
$time = $gettime[0]
[/autoit] [autoit][/autoit] [autoit]$newtime = StringSplit($time,":")
[/autoit] [autoit][/autoit] [autoit];_SetTime($newtime[1],$newtime[2],$newtime[3])
MsgBox(0, '', $newtime[1]&":"&$newtime[2]&":"&$newtime[3])
Exit
[/autoit]Braunschweig ist auch OK oder den hier "ntps1-0.cs.tu-berlin.de".
Ich hab auch einen internen der auf Linux basiert und sich die GPS Zeit holt.
Schnuffel
meist Du wegen der Nullen - geschenkt!
Die Atomzeit per IE ist auch eine Lösung ... vielen Dank.
Gruß
Es gibt aber auch eine UDF, um direkt einen NTP-Server abzufragen:
#include <Date.au3>
$time = _TimeSync()
;~ $aTime = StringSplit(StringMid($time, StringInStr($time, ' ')+1), ':')
;~ _SetTime($aTime[1], $aTime[2], $aTime[3])
MsgBox(0, '', 'Rechnerzeit:' & @TAB & _NowCalc() & @CRLF & 'Atomzeit: ' & @TAB & $time)
;**************************************************************************************************
Func _TimeSync()
Local $ntpServer = "1.de.pool.ntp.org"
UDPStartup()
Dim $socket = UDPOpen(TCPNameToIP($ntpServer), 123)
If @error <> 0 Then
MsgBox(0, "", "Can't open connection!")
Exit
EndIf
$status = UDPSend($socket, MakePacket("1b0e01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
If $status = 0 Then
Return SetError(1)
EndIf
$data = ""
While $data = ""
$data = UDPRecv($socket, 100)
Sleep(100)
WEnd
UDPCloseSocket($socket)
UDPShutdown()
$unsignedHexValue = StringMid($data, 83, 8); Extract time from packet. Disregards the fractional second.
$value = UnsignedHexToDec($unsignedHexValue)
$TZinfo = _Date_Time_GetTimeZoneInformation()
$TZoffset = $TZinfo[1] * - 2
$UTC = _DateAdd("s", $value, "1900/01/01 00:00:00")
Return _DateAdd("n", $TZoffset, $UTC)
EndFunc ;==>_TimeSync
;**************************************************************************************************
Func MakePacket($d)
Local $p = ""
While $d
$p &= Chr(Dec(StringLeft($d, 2)))
$d = StringTrimLeft($d, 2)
WEnd
Return $p
EndFunc ;==>MakePacket
;**************************************************************************************************
Func UnsignedHexToDec($n)
$ones = StringRight($n, 1)
$n = StringTrimRight($n, 1)
Return Dec($n) * 16 + Dec($ones)
EndFunc ;==>UnsignedHexToDec
;**************************************************************************************************
Die Funktion hatte ich mal aus dem englischen Forum und dann bei mir archiviert. Ich finde sie jetzt aber nicht mehr, kann also nicht sagen, von wem die stammt. Falls das jemand weiß, bitte melden!
Hi,
das Konvertieren der Zeit geht auch wesentlich einfacher
$sDate = "4/27/2009 8:35 AM"
$aDate = StringRegExp($sDate, '(\d{1,2})/(\d{1,2})/(\d{4}) (\d{1,2}):(\d{1,2}) ([AP]M)', 3)
If $aDate[5] = 'PM' Then $aDate[3] += 12
ConsoleWrite($aDate[1] & '.' & $aDate[0] & '.' & $aDate[2] & ' ' & $aDate[3] & ':' & $aDate[4] & @CRLF)
Und jetzt wieder StringFormat und in eine Funktion gepackt dann haben wir die kürzeste Lösung
[autoit]$str = "4/2/2009 8:3 AM"
MsgBox(4160, '', "Datum & Uhrzeit: " & _timeconvert($str))
Func _timeconvert($sDate)
Local $aDate = StringRegExp($sDate, '(\d{1,2})/(\d{1,2})/(\d{4}) (\d{1,2}):(\d{1,2}) ([AP]M)', 3)
Return StringFormat('%002i', $aDate[1]) & '.' & StringFormat('%002i', $aDate[0]) & '.' & $aDate[2] & _
' ' & StringFormat('%002i', $aDate[3]) & ':' & StringFormat('%002i', $aDate[4])
EndFunc ;==>_timeconvert
Na, da hast Du aber AM/PM vergessen!
Und überhaupt geht das auch noch kürzer:
$str = "4/2/2009 8:3 AM"
MsgBox(4160, '', "Datum & Uhrzeit: " & _timeconvert($str))
Func _timeconvert($sDate)
Local $aDate = StringRegExp($sDate, '(\d{1,2})/(\d{1,2})/(\d{4}) (\d{1,2}):(\d{1,2}) ([AP]M)', 3)
Return StringFormat('%02i.%02i.%02i %02i:%02i', $aDate[1], $aDate[0], $aDate[2], $aDate[3]+12*($aDate[5]='PM'), $aDate[4])
EndFunc ;==>_timeconvert