Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Uhrzeit differenz in der XP Kommandozeile berechnen

Frage Entwicklung Batch & Shell

Mitglied: Axel-the-Smoker

Axel-the-Smoker (Level 1) - Jetzt verbinden

14.05.2007, aktualisiert 15.05.2007, 5843 Aufrufe, 7 Kommentare

hallo,

ich habe in 2 Dateien 2 verschiedene uhrzeiten, die sich gelegentlich ändern, wie kann ich die differenz der beiden zeiten herausfinden und an eine 3. zeit addieren?

beispiel:

time.txt enthält 10:00:00
zeit1=10:00:00
time2.txt enthält 11:03:33
zeit2=11:03:33

differenz wären hier 01:03:33


timenow.txt enthält 20:00:00
zeit3=20:00:00
neue zeit3=zeit3+differenz
zeit3=21:03:33

kann es jemand nachvollziehen? ich würde das problem gern in der XP kommandozeile lösen.
könnte man den Beitrag http://www.administrator.de/Zeit_differenz_ermitteln_und_ausgeben_per_B ... zu meinem problem umeditieren?


Mit freundlichen Grüßen
Axel
Mitglied: Biber
14.05.2007 um 22:34 Uhr
Moin Axel-the.Smoker,

willkommen im Forum.

Nachvollziehen kann ich Dein Ansinnen schon, aber ich kann noch nicht so genau erkennen, wo die Schwierigkeiten liegen.

Die Mimik ist, da Batch keine Zeit-Rechnung unterstützt, doch schon vorgegeben.
Du musst den Stunden-Minuten-Sekunden-String "umrechnen" in Sekunden, dann kannst mit absoluten Werten [Sekunden seit Mitternacht oder auch Sekunden seit Silvester] Differenzen oder Summen bilden.

Vielleicht macht es eine Quick & Dirty-Variation des Themas von damals, dass Du ja schon gefunden hast, klar:
01.
::---ShowTime.bat Biber 2007 Sinnfreier Batch zur Demo Zeitdaueranzeige im Batch 
02.
@echo off & setlocal 
03.
Set zeit1=10:00:00 
04.
Set zeit2=11:03:33 
05.
:: den lassen wir für später...Set zeit3=20:00:00 
06.
for /f "tokens=1-3 delims=:," %%i in ("%zeit1%") do set /a start=%%i*3600+60*(1%%j %% 100)+1%%k-100 
07.
REM Variable %Start% hat jetzt einen in Sekunden umgerechneten %time%-Wert. 
08.
 
09.
for /f "tokens=1-3 delims=:," %%i in ("%zeit2%") do set /a stop=%%i*3600+60*(1%%j %% 100)+1%%k-100 
10.
REM Auch Variable %Stop% hat jetzt einen in Sekunden umgerechneten %time%-Wert. 
11.
 
12.
Set /a DauerinStd=(stop-start) / 3600 
13.
Set /a DauerInMin=(stop-start-(DauerinStd*3600) ) / 60 
14.
Set /a UndRestInSecs= (stop-start) -(DauerinStd*3600)- DauerInMin*60  
15.
@Echo [Unformatiert] Gedauert hat es %dauerinStd%:%dauerInMin%:%UndRestInSecs% 
16.
REM Oder formatiert: 
17.
Set /a FmtSecs=UndRestInSecs+100 
18.
Set /a FmtMins=DauerInMin+100 
19.
Set /a FmtStd=DauerInStd+100 
20.
@Echo [Formatiert] Gedauert hat es %FmtStd:~-2%:%FmtMins:~-2%:%FmtSecs:~-2%
Am CMD-Prompt:
01.
>e:\schnipsel\Showtime.bat 
02.
[Unformatiert] Gedauert hat es 1:3:33 
03.
[Formatiert] Gedauert hat es 01:03:33
Ich denke, das Vorkaspern der Addition von Sekundenwerten wäre jetzt auch nicht viel ergiebiger als die Differenzermittlung.

Wo liegt denn die Schwierigkeit (ich bin kein so guter Erklärer)?

Gruss
Biber
Bitte warten ..
Mitglied: Axel-the-Smoker
14.05.2007 um 23:51 Uhr
vielen dank für die erste hilfe, ich habe mal weiterentwickelt und angepasst:

01.
set zeit1=10:00:00 
02.
set zeit2=11:03:33 
03.
set zeit3=20:00:00 
04.
 
05.
for /f "tokens=1-3 delims=:," %%i in ("%zeit1%") do set /a start=%%i*3600+60*(1%%j %%  
06.
 
07.
100)+1%%k-100 
08.
 
09.
REM Variable %Start% hat jetzt einen in Sekunden umgerechneten %time%-Wert. 
10.
 
11.
for /f "tokens=1-3 delims=:," %%i in ("%zeit2%") do set /a stop=%%i*3600+60*(1%%j %%  
12.
 
13.
100)+1%%k-100 
14.
 
15.
REM Auch Variable %Stop% hat jetzt einen in Sekunden umgerechneten %time%-Wert. 
16.
 
17.
for /f "tokens=1-3 delims=:," %%i in ("%zeit3%") do set /a timenow=%%i*3600+60*(1%%j  
18.
 
19.
%% 100)+1%%k-100 
20.
 
21.
REM Auch Variable %timenow% hat jetzt einen in Sekunden umgerechneten %time%-Wert. 
22.
 
23.
Set /a TimeNowinStd=(timenow+stop-start) / 3600 
24.
Set /a TimeNowInMin=((timenow+stop-start)-(TimeNowinStd*3600))/60 
25.
Set TimeNowInMin 
26.
Set /a UndRestInSecs= (timenow+stop-start) -(TimeNowinStd*3600)- TimeNowInMin*60  
27.
Set UndRestInSecs 
28.
@Echo [Unformatiert] Uhrzeit: %TimeNowinStd%:%TimeNowInMin%:%UndRestInSecs% 
29.
REM Oder formatiert: 
30.
Set /a FmtSecs=UndRestInSecs+100 
31.
Set /a FmtMins=TimeNowInMin+100 
32.
Set /a FmtStd=TimeNowInStd+100 
33.
@Echo [Formatiert] Uhrzeit: %FmtStd:~-2%:%FmtMins:~-2%:%FmtSecs:~-2%
es funktioniert fast, nur wenn man über den tageswechsel kommt gibts noch probleme... hat jemand ne idee? habe noch eine variable date die man hochzählen müsste..

01.
set date1=01.01.2007

viele grüße Axel
Bitte warten ..
Mitglied: Biber
15.05.2007 um 09:18 Uhr
Moin Axel,
jedoch funktioniert es noch nicht 100% ...
Ist ja auch nicht von M$, sondern nur von mir...
.. und nur mit manchen uhrzeiten, ...
Dann gib doch bitte ein paar Beispiele für nicht funktionierende.. ich möchte nicht alle Kombinationen durchprobieren.
....wo könnte der fehler noch liegen?
Zu hohe Luftfeuchtigkeit? Seitenwind? Zu feiner Sand?

Grüße
Biber
Bitte warten ..
Mitglied: bastla
15.05.2007 um 10:05 Uhr
Hallo Axel-the-Smoker!

Da sich's mit (temporärem) VB-Script etwas leichter rechnet (und formatiert), vielleicht auch noch folgende Variante:
01.
@echo off & setlocal 
02.
set "ZeitBer=%temp%\ZeitBer.vbs" 
03.
set zeit1=10:00:00 
04.
set zeit2=11:03:33 
05.
echo Sec=DateDiff("s",WScript.Arguments(0),WScript.Arguments(1)):Sec=Sec-(Sec^<0)*86400:WScript.Echo FormatDateTime(Sec/86400,3)>"%ZeitBer%" 
06.
for /f "delims=" %%i in ('cscript //nologo "%ZeitBer%" %zeit1% %zeit2%') do set "diff1=%%i" 
07.
for /f "delims=" %%i in ('cscript //nologo "%ZeitBer%" %zeit2% %zeit1%') do set "diff2=%%i" 
08.
for /f "tokens=1-3 delims=:" %%i in ('cscript //nologo "%ZeitBer%" %zeit1% %zeit2%') do set /a diffStd=%%i & set /a diffMin=%%j & set /a diffSek=%%k 
09.
del "%ZeitBer%" 
10.
set diff
Die Übergabe der Zeitwerte erfolgt nach dem Schema "von" - "bis", oder anders formuliert: Der zuerst übergebene Wert wird vom zweiten Wert abgezogen (siehe Beispiele oben).

Grüße
bastla

P.S.: Ich bin eher toler- als militant, und antworte daher auch Rauchern ...
Bitte warten ..
Mitglied: Axel-the-Smoker
15.05.2007 um 14:34 Uhr
Ist ja auch nicht von M$, sondern nur von
mir...
> ....wo könnte der fehler noch
liegen?
Zu hohe Luftfeuchtigkeit? Seitenwind? Zu
feiner Sand?

ich verlange doch keine funktionsgaratie aber ich glaube es liegt am getriebesand, der blaue ist nicht so gut wie der rote!
aber ernsthaft: das mit den "fast 100%" hat sich gegeben, eine von mir geänderte variable hatte nen rechtschreibfehler. ich habe den obigen beitrag schon korrigiert! nur das tagübergeben steht noch an.... ich werde mal probieren vielleicht habt ihr ja eine idee

hier ein schema

01.
 
02.
date1=01.01.2007 
03.
 
04.
tag,monat,jahr aus date1 deklarieren 
05.
 
06.
if stunde>23 then 
07.
   stunde=stunde-24 
08.
   tag=tag+1 
09.
 
10.
   if tag>30 bzw. >31 {das wird schwierig, vorallem beim feb} 
11.
      tag=tag-30 bzw. -31 
12.
      monat=monat+1 
13.
 
14.
      if monat>12 
15.
         monat=monat-12   
16.
         jahr=jahr+1 
17.
 
18.
      end 
19.
   end 
20.
end


Mit freundlichen Grüßen
Axel

PS: @bastla auch vielen dank an Deine umsetzung, vielleicht kann ich daraus meine formeln noch weiter optimieren, und der Nick ist noch aus alten zeiten, bin nichtraucher *smile*
Bitte warten ..
Mitglied: Biber
15.05.2007 um 18:30 Uhr
@Axel-the-ex-Smoker

hier ein schema..
In die Tonne damit.
Mach es nicht so kompliziert.
ich habe es oben schon geschrieben (oder zumindest gedacht):

Für Quick-und-Dirty, also Zeitberechnungen von-bis im Minuten/Stundenbereich
---> mit Sekunden seit Mitternacht als Basis recnnen.

Für mehr Robustheit: umrechnen auf Sekunden seit Silvester. Oder seit 1.1.1970.
Oder Einführung des Vatertags.

Spricht doch nichts dagegen, wenn da größere Sekundenzahlen addiert/subtrahiert werden.

Gruß
Biber
Bitte warten ..
Mitglied: Axel-the-Smoker
15.05.2007 um 22:37 Uhr
ich habe es oben schon geschrieben (oder
zumindest gedacht):


?? wo? quick and dirty schon? auf jeden fall bleibt für mich die frage wie ich den zeitlichen übertrag aufs datum bekomme

Mit freundlichen Grüßen
Axel
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Netzwerke
HTTP Overhead Berechnen und Protokolstack

Frage von karlosss zum Thema Netzwerke ...

Festplatten, SSD, Raid
Speicher der nächsten Jahre berechnen (10)

Frage von Ravers zum Thema Festplatten, SSD, Raid ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (22)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...