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

Zeitdifferenz über 24 Studnen

Frage Entwicklung JavaScript

Mitglied: ngutschek

ngutschek (Level 1) - Jetzt verbinden

21.02.2014 um 08:51 Uhr, 1884 Aufrufe, 23 Kommentare

Hallo zusammen,

ich benötige ein Script, in dem ich über mehrere Tage berechnen kann.
Ich habe vier Textfelder - Feld1: Datum/Abfahrt; Feld2: Uhrzeit/Abfahrt; Feld3: Datum/Rückkehr; Feld4: Uhrzeit/Rückkehr, am Ende habe ich dann das Feld: Zeit.

Ich habe nun eine Formel, welche mir die Stunden innerhalb eines Tages berechnet.
Allerdings benötige ich hier die Berechnung über mehrere Tage, inkl. der Berücksichtigung von Schaltjahren, evtl. auch Abzug von Feiertagen.´

Ich stehe gerade am Anfang und würde mich über Hilfe sehr freuen!!!!

Anbei nun der momentan eingesetzte Code:
Startzeit aus Feld "Uhrzeit 1" (Format "Zeit HH:MM"):
UhrzeitA1=this.getField("Uhrzeit 1").value;

Endezeit aus Feld "Uhrzeit 5" (Format "Zeit HH:MM"):
UhrzeitE1=this.getField("Uhrzeit 5").value;

Startzeit in Minuten seit 00:00h umrechnen:
var StartZeit = UhrzeitA1.substr(0,2) * 60 + UhrzeitA1.substr(3,2) * 1;

Endezeit in Minuten seit 00:00h umrechnen:
var EndeZeit = UhrzeitE1.substr(0,2) * 60 + UhrzeitE1.substr(3,2) * 1;

Zeitdifferenz in Minuten (auch tagesübergreifend):
var DiffZeit = ((EndeZeit + 24*60) - StartZeit) % (24*60);

ganze Stunden der Dauer:
var DauerH = Math.floor(DiffZeit/60);

Minutenanteil der Dauer:
var DauerM = DiffZeit - (DauerH * 60);

DauerH = "00" + DauerH;
DauerH = DauerH.substr(-2);

DauerM = "00" + DauerM;
DauerM = DauerM.substr(-2);

Ergebnis im Format "hh:mm" zusammensetzen:
event.value = DauerH + ":" + DauerM;

Mitglied: colinardo
21.02.2014, aktualisiert um 10:40 Uhr
Hallo ngutchek, Willkommen im Forum!
Beispiel wie man es machen könnte:
01.
var startDate = "01.01.2014"; 
02.
var startTime = "10:20"; 
03.
var endDate = "02.01.2014"; 
04.
var endTime = "10:25"; 
05.
var dStart  = new Date(startDate.substr(6,4),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0"); 
06.
var dEnd  = new Date(endDate.substr(6,4),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0"); 
07.
var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart); 
08.
var diffHours = diffMilliseconds / (1000*60*60); 
09.
var diffMinutes = Math.round((diffHours % Math.floor(diffHours)) * 60); 
10.
alert ("Die Different beträgt " + Math.floor(diffHours) + " Stunden " + diffMinutes + " Minute(n)");
Grüße Uwe
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 11:45 Uhr
Vielen Dank für die schnelle Antwort. Allerdings kriege ich den Bezug nicht auf meine Felder.
Ich habe ja keine festen Daten, sondern variierende zum Eingeben.

Lg Natascha
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 11:47 Uhr
Zitat von ngutschek:
Vielen Dank für die schnelle Antwort. Allerdings kriege ich den Bezug nicht auf meine Felder.
Ich habe ja keine festen Daten, sondern variierende zum Eingeben.
warum ist das ein Problem ? Einfach den Variablen die Eingabewerte aus den Feldern zuweisen ...
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 11:56 Uhr
Das habe ich getan, aber da passiert im Formular nichts. Im Ergebnis aktualisiert sich nichts automatisch.
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 12:02 Uhr
Zitat von ngutschek:
Das habe ich getan, aber da passiert im Formular nichts. Im Ergebnis aktualisiert sich nichts automatisch.
ähmmm, ich habe jetzt deinen Code nicht übernommen, an deine Situation anpassen musst du das schon selbst.
Führe den Code mal alleine aus, er gibt dann die Differenz in einer Alert-Box aus.
Hier ging es ja ums Prinzip ... den Code lesen solltest du schon mal, deinen ganzen Code habe ich ja nicht hier ...
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:02 Uhr
Hmmm... Ich bin halt blutiger Anfänger
ich arbeite ja in einem PDF Formular.

Der Code ist der komplette den ich oben angegeben habe. Mehr habe ich nicht
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 12:04 Uhr
Zitat von ngutschek:
ich arbeite ja in einem PDF Formular.
ja das sollte man vorher unbedingt erwähnen !!! Wenn es hier um Javascript geht dachte ich natürlich erst mal an ein Browser-Fomular.
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:04 Uhr
Oh entschuldige... Das war mir nicht klar, dass das so einen Unterschied macht.
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 12:10 Uhr
mir fehlen in deinem Code die Felder für das Start- und End-Datum .... am besten schick das Formular via Personal Message dann mach ich dir das direkt darin, sonst wird das hier nichts...
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:12 Uhr
Startzeit aus Feld "Uhrzeit 1" (Format "Zeit HH:MM"):
UhrzeitA1=this.getField("Uhrzeit 1").value;
Startdatum aus Feld "Datum 1" (Format "Datum dd/mm/yy"):
DatumA2=this.getField("Datum 1").value;
Endezeit aus Feld "Uhrzeit 5" (Format "Zeit HH:MM"):
UhrzeitE1=this.getField("Uhrzeit 5").value;
Enddatum aus Feld "Datum 5" (Format "Datum dd/mm/yy"):
DatumE2=this.getField("Datum 5").value;

Die Felder stimmen, allerdings habe ich mich bei dem Rest mal allein versucht.
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:15 Uhr
Wie kann ich denn ein Formular versenden?
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 12:17 Uhr
Die standen aber oben in deinem Code nicht.... hellsehen kann ich leider noch nicht
probiers mal hiermit
01.
var startDate = this.getField("Datum 1").value;  
02.
var startTime = this.getField("Uhrzeit 1").value; 
03.
var endDate = this.getField("Datum 5").value; 
04.
var endTime = this.getField("Uhrzeit 5").value; 
05.
var dStart  = new Date(startDate.substr(6,4),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0"); 
06.
var dEnd  = new Date(endDate.substr(6,4),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0"); 
07.
var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart); 
08.
var diffHours = diffMilliseconds / (1000*60*60); 
09.
var diffMinutes = Math.round((diffHours % Math.floor(diffHours)) * 60); 
10.
 
11.
event.value = Math.floor(diffHours) + ":" + diffMinutes;
Bitte warten ..
Mitglied: colinardo
21.02.2014 um 12:18 Uhr
Zitat von ngutschek:

Wie kann ich denn ein Formular versenden?
Mit der Post ...
Kommt drauf an wie ...
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:23 Uhr
Super, da hat sich jetzt schonmal was getan.....
Vielen Dank dafür.
Jetzt müsste ich nur noch wissen wie ich die Stunden in Tag:Stunden:Minuten umrechnen kann.
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 12:26 Uhr
denke das solltest du jetzt schaffen:
Prinzip: Tage = Runde(Stunden / 24)
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 12:29 Uhr
Ich sage nur AAAAnfäääänger.... Bringe mir das selber bei, aber ich kenne die ganzen Befehle noch garnicht
Bitte warten ..
Mitglied: colinardo
21.02.2014 um 12:30 Uhr
Zitat von ngutschek:
Ich sage nur AAAAnfäääänger.... Bringe mir das selber bei, aber ich kenne die ganzen Befehle noch garnicht
melde mich später nochmal, muss jetzt erst weg ....
Bitte warten ..
Mitglied: colinardo
21.02.2014, aktualisiert um 14:01 Uhr
Zitat von ngutschek:
Jetzt müsste ich nur noch wissen wie ich die Stunden in Tag:Stunden:Minuten umrechnen kann.
01.
function dhm(t){ 
02.
    var cd = 24 * 60 * 60 * 1000, 
03.
        ch = 60 * 60 * 1000, 
04.
        d = Math.floor(t / cd), 
05.
        h = '0' + Math.floor( (t - d * cd) / ch), 
06.
        m = '0' + Math.round( (t - d * cd - h * ch) / 60000); 
07.
    return [d, h.substr(-2), m.substr(-2)].join(':'); 
08.
09.
 
10.
var startDate = this.getField("Datum 1").value;  
11.
var startTime = this.getField("Uhrzeit 1").value; 
12.
var endDate = this.getField("Datum 5").value; 
13.
var endTime = this.getField("Uhrzeit 5").value; 
14.
if (startDate != "" && startTime != "" && endDate !="" && endTime !=""){ 
15.
    var dStart  = new Date(startDate.substr(6,2),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0"); 
16.
    var dEnd  = new Date(endDate.substr(6,2),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0"); 
17.
    var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart); 
18.
    event.value = dhm(diffMilliseconds); 
19.
}else{ 
20.
    event.value = ""; 
21.
}
Bitte warten ..
Mitglied: ngutschek
21.02.2014 um 13:21 Uhr
Vielen Dank.
Aber ich glaube ich mache irgendwas falsch
Bitte warten ..
Mitglied: colinardo
21.02.2014 um 15:36 Uhr
Problem ist ja nun behoben...
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.

Grüße Uwe
Bitte warten ..
Mitglied: Winfried-HH
22.02.2014, aktualisiert um 08:14 Uhr
Colinardo, welche Scriptsprache ist das? Und musste es diese Sprache sein? In VBScript hätte ich das Problem einfach mit DateDiff gelöst, der Code wäre glaube ich übersichtlicher gewesen.
Bitte warten ..
Mitglied: colinardo
22.02.2014, aktualisiert um 08:40 Uhr
Zitat von Winfried-HH:
Colinardo, welche Scriptsprache ist das? Und musste es diese Sprache sein? In VBScript hätte ich das Problem
Schau dir mal die Kategorie und Kommentare an, dann wüsstest du das es hier um JavaScript in einem Acrobat-Formular geht ... und Acrobat kennt kein VBS!

Sicher mit VBS und den integr. Funktionen ist das selbst für Anfänger kein Problem, aber ist nun mal im Acrobat nicht drin...

Grüße Uwe
Bitte warten ..
Mitglied: Winfried-HH
22.02.2014 um 08:41 Uhr
Schau dir mal die Kategorie und Kommentare an, dann wüsstest du das es hier um JavaScript in einem Acrobat-Formular geht ...

Alles klar ... auf die Kategorie gucke ich fast nie
Sorry ...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
RedHat, CentOS, Fedora
Upgrading Fedora 24 to Fedora 25 - Fedora Magazine

Link von Frank zum Thema RedHat, CentOS, Fedora ...

Windows Server
gelöst Event logs on system - In 24 hours more than 200,000 log events are generated (7)

Frage von Daywalker75 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...