Antworten auf deine Fragen:
Neues Thema erstellen

JavaScript + Datum: Zeitspanne angeben lassen

marDin_H

Mediapublisher

hallo,
ich such nach einer Möglichkeit wenn ich 2 verschiedene Datum's angegeben hab, die Zeitspanne berechnen zu lassen - entweder in JavaScript oder FormCalc.

Beispiel: heute ist der 12.10.2008, ich möchte die den Zeitraum in Tagen bis zum 01.01.2008 berechnen lassen (also 11 Tage)

angegeben ist das Datum jeweils in DD.MM.YYYY
 

AW: JavaScript + Datum: Zeitspanne angeben lassen

Code:
function calcDays(){
  var date1 = document.getElementById('d1').lastChild.data;
  var date2 = document.getElementById('d2').lastChild.data;
  date1 = date1.split("-");
  date2 = date2.split("-");
  var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);
  var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);
  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
  document.getElementById('diffDays').lastChild.data = daysApart;
}
Quelle:
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

danke für die fixe Rückantwort!
leider bin ich nicht so der checker in JavaScript, welche Variablen muss ich nun ersetzten?
angenommen mein Anfangsdatum heist anfang und dort wo's aufhört dementsprechend ende. muss ich date1 und 2 dadurch ersetzen?


Grund ist der: habe mit dem LiveCycle Designer ein Formular erstellt, hier drin enthalten sind 2 Datums-/Uhrzeitfelder, in den man das jeweilige Datum anklicken kann. In einem separaten Feld soll nun die Zeitdauer dazwischen in Tagen als Ergebnis stehen.

ODER ist es nicht möglich mit dem Datumsfeld zu arbeiten??
...hatte selber zunächst an eine einfachere Formel in FormCals gedacht ... ende-anfang ...funktioniert aber leider nicht
 

Christian

verpeilt & verschallert

AW: JavaScript + Datum: Zeitspanne angeben lassen

Um Dir das ganze ein bisschen zu veranschaulichen:
Code:
<script>
function calcDays(){
  var date1 = document.getElementById('d1').lastChild.data;
  var date2 = document.getElementById('d2').lastChild.data;
  date1 = date1.split(".");
  date2 = date2.split(".");
  var sDate = new Date(date1[2],date1[1],date1[0]);
  var eDate = new Date(date2[2],date2[1],date2[0]);
  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
  document.getElementById('diffDays').innerHTML = daysApart;
}
</script>

<div id="d1">20.10.2007</div>
<div id="d2">20.11.2007</div>

<div id="diffDays"></div>
<input type="button" onClick="calcDays();" value="Differenz Berechnen"/>
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

oke, das ist ja der gleiche Code wie kskoberharz schon angegeben hat.
wo muss ich den aber nun das Datum eintragen? wo das Anfangs- und wo das Enddatum?
 

Christian

verpeilt & verschallert

AW: JavaScript + Datum: Zeitspanne angeben lassen

Nein ist es 1. nicht und 2. Versuch doch erstmal selber. Du wirst schon sehen, wo Du das eintragen musst. Soviel gibt es da nicht zu machen.
Augen auf beim Eierkauf!
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

d.h. ich sollte zweiteres nehmen, weil das erste Skript unvollständig ist!

mir ist es trotzdem nicht schlüssig, welches die zwei Datumsvariablen sind - weder gestern abend, noch gerade hat es bei mir im LiveCycle Designer geklappt. mit d1 und d2 klappt es nicht.

hier meine Anordnung im Designer:


hier die PDF-Vorschau, aber in dem Skript muss ein Fehler liegen:


das blaue Feld in dem das Ergebnis stehen sollte, bleibt leer:
 

Christian

verpeilt & verschallert

AW: JavaScript + Datum: Zeitspanne angeben lassen

Ergo kommt PDF nicht mit der Funktion getElementById klar. Hier nochmal eine andere Version (Im Browser funktionierte meine Version übrigens!)
Code:
<script>
function calcDays(){
  var raw = document.getElementsByTagName('div');
  for(var i =0; i<=raw.length-1; i++){
  	 if( raw[i].id == 'd1' ){
  	 	var date1 = raw[i].innerHTML;
  	 }
  	 if( raw[i].id == 'd2' ){
  	 	var date2 = raw[i].innerHTML;
  	 }
  	 if( raw[i].id == 'diffDays' ){
  	 	var resultContainer = raw[i];
  	 }
  }
  if( date1 && date2 && resultContainer ){
	  date1 = date1.split(".");
	  date2 = date2.split(".");
	  var sDate = new Date(date1[2],date1[1],date1[0]);
	  var eDate = new Date(date2[2],date2[1],date2[0]);
	  var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));
	  resultContainer.innerHTML = daysApart;
  }else{
  	  alert('Konnte nicht alle Werte finden.');
  }
}
</script>

<div id="d1">20.10.2007</div>
<div id="d2">20.11.2007</div>

<div id="diffDays"></div>
<input type="button" onClick="calcDays();" value="Differenz Berechnen"/>
 
Zuletzt bearbeitet:

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

ich bin kein Skript Profi und seh hier zunächst nur irgendwelche Zeichen - sollte daher wissen wo die zwei Datumsvariablen den einzutragen sind. ansonsten komm ich zu keiner Lösung.
 

Top_Gun

Aktives Mitglied

AW: JavaScript + Datum: Zeitspanne angeben lassen

o_O in dem Script sind lediglich 2 Daten (Mehrzahl von Datum) zu finden. Wenn man mal von A bis B denkt, könnte man darauf kommen, dass mit diesen Werten gerechnet wird...

Ach und ich bin auch kein JS-Profi und steige dadurch...
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

schon schon - aber welches Datum meinst du denn genau? d1? date1? date1[1]? date1[2]? date1[0]?

ich müsst nur wissen, wie ich letztendlich im LiveCycleDesigner die zwei Datumsfelder bennen müsste, also entweder d1 oder d2, dass sie vom Skript berechnet werden können?
und da steig ich halt noch nicht durch!

Sorry, dass ich gefragt hab!!
 

Top_Gun

Aktives Mitglied

AW: JavaScript + Datum: Zeitspanne angeben lassen

schon schon - aber welches Datum meinst du denn genau? d1? date1? date1[1]? date1[2]? date1[0]?

ich müsst nur wissen, wie ich letztendlich im LiveCycleDesigner die zwei Datumsfelder bennen müsste, also entweder d1 oder d2, dass sie vom Skript berechnet werden können?
und da steig ich halt noch nicht durch!
Wie gesagt ich bin kein JS Profi und auch weiß ich nicht was dieser LiveCycleDesigner ist aber wenn du dir die zwei Stellen im Script anschaust:
if( raw.id == 'd1' ){
var date1 = raw.innerHTML;
}
if( raw.id == 'd2' ){
var date2 = raw.innerHTML;
}
if( raw.id == 'diffDays' ){
var resultContainer = raw;
}
<div id="d1">20.10.2007</div>
<div id="d2">20.11.2007</div>

<div id="diffDays"></div>
Und du weißt, spätestens von mir, dass die zwei Daten die Werte zur Berechnung sind.
Jetzt sieht man doch eigentlich, dass die zwei Daten in den "Feldern" d1 und d2 stehen und die Differenz in dem "Feld" diffDays

Oder nicht?

Sorry, dass ich gefragt hab!!
Es kommt darauf an wieso man etwas fragt. Ich kann vieles verstehen und habe in vielen Dingen Nachsicht.
Du verstehst das Script nicht, nach eigener Angabe weil du JS nicht kannst.
Ich kann JS auch nicht und verstehe das Script.
Liegt es jetzt daran, dass ich ein Naturtalent bin oder das du nicht scharf genug nachgedacht hast?!
Also wenn du ein wenig Eigeninitiative zeigst bekommst du auch nicht so dumme Kommentare...

EDIT: Ach übrigens bin ich der Meinung, dass dein erster Versuch nicht geklappt hat, weil du in dem LiveCycleDesigner das Ergebnisfeld statt "diffDays" "Textfeld1" genannt hast...
 
Zuletzt bearbeitet:

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

bin keiner der sinnlos Threads erstellt, versuche es immer auf selbst hinzukriegen. nur Dann wenn ich selbst nicht mehr weiter komm, Dann post ich hier.
und an diesem Punkt bin ich nun halt, wenn ich mir die Zeitdifferenz berechnen lassen will.

leider muss ich euch mitteilen, dass eure JS Skripte mit dem LiveCycle Designer nicht funktionieren:


Fehler: Variable oder value expected

obwohl Datumsfeld 1 korrekt d1, Datumfsfeld 2 korrekt d2 und das Ergebsnissfeld diffDays heißt.
an was kann dies liegen?
kann es sein, dass dieses Skript nur in Browsern läuft ? (schließlich steht auch etwas von HTML im Code!) und mit HTML hat LifeCycle Designer nichts zu tun - der macht nur FormCalc + eben JS

@TOP_GUN:
mit dem besagten Programm kann man PDF-Formulare erstellen - vor allem auch dynamische!! - hast bestimmt schon damit zu tun gehabt - vielleicht auch nur indirekt und unbewusst
außerdem Bestandteil von Acrobat Pro Windows
 

Top_Gun

Aktives Mitglied

AW: JavaScript + Datum: Zeitspanne angeben lassen

kann es sein, dass dieses Skript nur in Browsern läuft ? (schließlich steht auch etwas von HTML im Code!) und mit HTML hat LifeCycle Designer nichts zu tun - der macht nur FormCalc + eben JS
Kann sicherlich sein, schließlich sind wir hier im Webbereich und du hast nie gesagt das der Designer HTML nicht kann... Meine Kentnisse reichen aber nicht so weit, als dass ich dir jetzt weiter helfen könnte...

@TOP_GUN:
mit dem besagten Programm kann man PDF-Formulare erstellen - vor allem auch dynamische!! - hast bestimmt schon damit zu tun gehabt - vielleicht auch nur indirekt und unbewusst
außerdem Bestandteil von Acrobat Pro Windows
Wenns Bestandteil von Acrobat Pro ist, hab ich sicherlich schon mal damit zu tun gehabt, aber tatsächlich noch nie bewusst...
Wenn ich dynamische PDF-Dokumente erzeugen will, dann mach ich das mit PHP...
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

ja also der Designer kann definitiv kein HTML!
vielleicht ist die Platzierung hier nicht ganz perfekt, aber der Webbereich ist die einzige Ecke im Forum, die sich mit Skripten beschäftigt. deshalb habe ich es hier geschaltet.

...etwas ausgeschweift, mein Hintergrund: habe mit dem besagten Programm ein Rechnungsformular erstellt, das einfach zu bedienen ist. ein paar Felder, Checkboxen, ein paar Auswahlen und eben die Datumsfelder, dabei alles schön erweiterbar und dynamisch.... am Ende steht der Endpreis, ein Klick auf Druck und man hat die Rechnung auf Papier.
Soweit die Theorie - eine Sache fehlt mir noch! das sind die besagten Datumsfelder und die Berechnung - Grund ist der, das Formular soll zwischen zwei Datums die Tage dazwischen berechnen (hat was mit der Preisfindung zu tun) geht dieses Feature nicht, ist das Formular fast sinnlos, weil man dann das Datum und die Tage selber eintragen muss (Fehlerquelle!!)

kennt jemand also ein Script (JavaScript oder FormCalc) welches diese Berechnung kann?


...mal Interesse halber, in welchem Programm erstellst du die PDF-Formulare wenn sie mit PHP laufen? Dreamweaver?
 

Top_Gun

Aktives Mitglied

AW: JavaScript + Datum: Zeitspanne angeben lassen

habe mit dem besagten Programm ein Rechnungsformular erstellt, das einfach zu bedienen ist. ein paar Felder, Checkboxen, ein paar Auswahlen und eben die Datumsfelder, dabei alles schön erweiterbar und dynamisch.... am Ende steht der Endpreis, ein Klick auf Druck und man hat die Rechnung auf Papier.
Heißt das du hast schon ein Berechnungsscript? Wäre ja mal interessant zu wissen wie das aussieht...

...mal Interesse halber, in welchem Programm erstellst du die PDF-Formulare wenn sie mit PHP laufen? Dreamweaver
Hmm also das ganze läuft unter PHP. Also alle Berechnungen alle Einstellungen und Eintragungen. Danach wird aus PHP ein PDF erstellt, welches verschickt, abgespeichert oder ausgedruckt werden kann.

EDIT: PHP erstelle ich mit dem PHP-Coder, dafür kannst du aber auch jeden anderen Texteditor mit oder ohne Syntaxhighlighting nehmen...
 

marDin_H

Mediapublisher

AW: JavaScript + Datum: Zeitspanne angeben lassen

hier scheints also dass niemand eine genaue Ahnung davon hat.

für alle, die es wissen wollen, wies funktioniert (wohlgemerkt mit dem LiveCycle Designer und nicht PHP ...oder co.) hier die Formel wie man die Zeitdifferenz zwischen 2 Tagen mit FormCalc berechnen kann:
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben