Tage zwischen zwei Datumsdaten zählen

Status
Nicht offen für weitere Antworten.

2komma7

Mitglied
Liebe Gemeinde,

jetzt habe ich es dummerweise zuerst als Gast gepostet :oops:, daher hiermit ein neuer Versuch. Sorry!! :D

seit 2-3 Tagen bekomme ich es nicht hin, die Tage zwischen 2 Datumsdaten, ohne Sa. und So., zu zählen. Ich möchte quasi die Nettoarbeitstage zählen, aber meine WHILE-Schleife verzählt sich ständig, da z. B. SATURDAY und SUNDAY nicht immer als solche erkannt werden. Bin schon leicht verzweifelt :(

Code:
Calendar startCal = Calendar.getInstance();
Calendar endCal = Calendar.getInstance();
startCal.set(startY, startM, startD);
endCal.set(endY, endM, endD);
			
if (!(startCal.after(endCal))) // Enddatum >= Startdatum?
{
	int netHolidays = 0;
								
	while (!(startCal.after(endCal)))
	{
		if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY)
		{
		        if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY)
		        {
	                ++netHolidays;
		        }
		}
		startCal.add(Calendar.DATE, 1);
	}

So gebe ich z. B. als Start- und Enddatum jew. ein und denselben Tag ein, der auf einen Sa. oder So. fällt, so wird trotzdem der Zähler "netHolidays" inkrementiert, da anscheinend Sa. oder So. nicht erkannt wird. Unter der Woche soll dies ja geschehen! Gebe ich ein Intervall über mehrere Tage, also auch über ein Wochenende hinweg, an, so verzählt er sich auch um 1 Tag (zuviel). Das passiert auch, wenn man ein Intervall über mehrere Wochen anlegt, er verzählt sich immer um 1 Tag...

Hat jemand eine Idee?
 

abollm

Top Contributor
Ich habe mir mal vor einiger Zeit zu diesem Thema eine kleine Klasse geschirieben. Ich poste die einfach mal. Vielleicht kannst du damit etwas anfangen.

Code:
package de;
import java.text.*;
import java.util.*;

/** 
 * Created on 28.03.2005
 * 
 * AnzahlTage -- berechnet die Anzahl der Tage zwischen zwei Daten.
 * 
 * @author abollm
 * 
 */
public class AnzahlTage {
	public static void print(double value, String format)
	   {
	     DecimalFormat df = new DecimalFormat(format);
	     System.out.println(df.format(value));
	   }

	public static void main(String[] av) {
		/** Datum 1 */
		int y1 = 1984;
		int y2 = 1988;
		
		//GregorianCalendar d1 = new GregorianCalendar(y1,9,1,0,0);
		GregorianCalendar d1 = new GregorianCalendar(TimeZone.getTimeZone("ECT"));
		d1 = new GregorianCalendar(y1,2,15,0,0);
		SimpleDateFormat formater = new SimpleDateFormat("dd.MM.yyyy");
		System.out.println("d1 -> SimpleDateFormat: "+formater.format(d1.getTime()));
		//Date d1 = new GregorianCalendar(y1,0,1,0,0).getTime();

		/** Datum 2 */
		GregorianCalendar d2 = new GregorianCalendar(y2,11,31,0,0);
		System.out.println("d2 -> SimpleDateFormat: "+formater.format(d2.getTime())+"\n");

		// Hole Millisek. von jedem Datum und subtrahiere.
		//long diff = d2.getTime() - d1.getTime();
		long diff = d2.getTimeInMillis() -d1.getTimeInMillis();

		System.out.println("Anzahl Tage zwischen " + d1.get(Calendar.DATE)+ "." +
			       (d1.get(Calendar.MONTH)+1) + "." +
			       d1.get(Calendar.YEAR)  +
			" und " + d2.get(Calendar.DATE) + "." +
		       (d2.get(Calendar.MONTH)+1) + "." +
		       d2.get(Calendar.YEAR) + ": "+
			(diff / (1000*60*60*24)+1) +
			" Tage.");
		double jahreMitSJ = (diff / (1000*60*60*24)+1)/365.2475;  // Achtung - das alte Spiel mit _.0_ beachten!
		double jahreOhneSJ = (diff / (1000*60*60*24)+1)/365.0;  // Achtung - das alte Spiel mit _.0_ beachten!

		System.out.print("= Jahre mit SJ-Berücks.:  " ); print(jahreMitSJ, "#,###,##0.000000 ");
		System.out.print("= Jahre ohne SJ-Berücks.: " ); print(jahreOhneSJ, "#,###,##0.000000 Jahre ");
	}
}

Das hier gibt das obige Programm aus:
Code:
d1 -> SimpleDateFormat: 15.03.1984
d2 -> SimpleDateFormat: 31.12.1988

Anzahl Tage zwischen 15.3.1984 und 31.12.1988: 1753 Tage.
= Jahre mit SJ-Berücks.:  4,799485 
= Jahre ohne SJ-Berücks.: 4,802740 Jahre

BTW: SJ steht -- wie man leicht erraten kann -- für Schaltjahr.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
G Datum letzte 7 tage Allgemeine Java-Themen 6
L Methoden Dateien älter als 30 Tage? Allgemeine Java-Themen 11
P [Joda Time] Jahr, Tage, Stunden... vergangen seit Zeitpunkt Allgemeine Java-Themen 9
L Anzahl der Tage eines Monats Allgemeine Java-Themen 3
A einzelne Tage als Datum ausgeben Allgemeine Java-Themen 6
M GregorianCalender Tage dazuzählen Allgemeine Java-Themen 2
J Alle Tage eines Jahres Allgemeine Java-Themen 2
G Log4J - Logs älter als 3 Tage löschen Allgemeine Java-Themen 5
P Dauer (Tage, Stunden, Minuten, Sekunden) berechnen Allgemeine Java-Themen 5
G Anzahl Tage in Datum umwandeln Allgemeine Java-Themen 13
H Differenz Tage errechnen Allgemeine Java-Themen 2
O aktuelle Tage bis zum jahresende ermitteln Allgemeine Java-Themen 3
G Zum Datum 30 Tage oder 1 Monat hinzufügen Allgemeine Java-Themen 10
R Date Tage abziehen Allgemeine Java-Themen 3
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
B Sent and Receive Funktionen zwischen Objekten ermöglichen? Allgemeine Java-Themen 8
Master3000 Dateien zwischen verschiedenen Netzwerken senden Allgemeine Java-Themen 17
CptK Backpropagation parallelisieren: Kommunikation zwischen den Threads Allgemeine Java-Themen 7
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
TonioTec Api für Datenaustausch zwischen Client und Server Allgemeine Java-Themen 0
Kirby.exe Schauen ob ein Kante zwischen Knoten existiert Allgemeine Java-Themen 4
L Schlüsselworte Wie kann ich am Besten ein LocalDate zwischen Anfangs und EndDate checken Allgemeine Java-Themen 10
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
N Kollision zwischen ImageIcon und Rechteck Allgemeine Java-Themen 1
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
B Zufällig zwischen vorgegebenen Zahlen auswählen Allgemeine Java-Themen 6
J Millisekunde zwischen 2 Daten Allgemeine Java-Themen 6
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
J Abhängigkeit zwischen Rechenzeit und Speicherbedarf in einen Algorithmus Allgemeine Java-Themen 7
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
V Input/Output Austausch von Bytes zwischen C# und Java Allgemeine Java-Themen 3
L Kommunikation zwischen C# und Java? Allgemeine Java-Themen 5
A Best Practice Unterschied zwischen einer sauberen Dependency Injection und einer statischen Klasse Allgemeine Java-Themen 5
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
J Wie erschaffe ich einen sicheren Datenaustausch zwischen Thread und Nicht-Threads Allgemeine Java-Themen 8
M Unterschied zwischen Win 7/2008R2 und Win8.1/2012R2? Allgemeine Java-Themen 8
N Zeitabstand zwischen 2 Daten(Mehrzahl von Datum) Allgemeine Java-Themen 3
O Socket-Unterschiede zwischen Windows und Ubuntu Allgemeine Java-Themen 2
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
S Eclipse Abhängigkeiten zwischen den Projekten in Eclipse Allgemeine Java-Themen 2
G nervendes Problem mit unterschieden zwischen Javax64 und x86 | je nach Programmbedarf beides nötig Allgemeine Java-Themen 2
S Threads Kommunikation zwischen SocketThread und WorkerThread Allgemeine Java-Themen 11
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
B Unteschiede zwischen Kantenoperatoren Allgemeine Java-Themen 3
A Kommunikation zwischen 2 Jar-dateien Allgemeine Java-Themen 16
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
Z zeit zwischen maus drücken und loslassen Allgemeine Java-Themen 7
C Komisches Verhalten zwischen Set und List bei contains Allgemeine Java-Themen 6
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
N Gridbaglayout - Abstände zwischen Komponenten einstellen Allgemeine Java-Themen 2
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
D Exakte Unterschied zwischen diesen Elementen? Allgemeine Java-Themen 5
C Swing Daten zwischen JTable teilen Allgemeine Java-Themen 6
N Unterschied zwischen "Java" und "Java mit Eclipse" Allgemeine Java-Themen 17
X Bild im Memory zwischen speichern Allgemeine Java-Themen 11
T Zugriff zwischen Klassen für repaint Allgemeine Java-Themen 7
S Assoziation zwischen 2 klassen Allgemeine Java-Themen 14
V Threads & Pipes Datenaustausch zwischen Threads Allgemeine Java-Themen 2
G Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread Allgemeine Java-Themen 2
C Strings zwischen 2 Zeichen auslesen Allgemeine Java-Themen 7
Lufti Unterschied zwischen Djava.library.path und Class-Path im Manifest? Allgemeine Java-Themen 2
E kommunikation zwischen Fenstern Allgemeine Java-Themen 3
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7
B Unterschied zwischen Klasse und Objekt? Allgemeine Java-Themen 8
S Datenformat zum Austausch zwischen Java und Python? Allgemeine Java-Themen 3
G Interface zwischen 2 Programmierern Allgemeine Java-Themen 10
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
J Unterschied zwischen "Debug" und "Run" Allgemeine Java-Themen 16
A java.io-Änderungen zwischen java 1.4 und 1.6 Allgemeine Java-Themen 18
G Zwischen Datei und Verzeichnis unterscheiden. Allgemeine Java-Themen 11
J Unterschiede zwischen normaler und Debug Ausfuehrung? Allgemeine Java-Themen 2
G Linked List zwischen zwei Threds übergeben Allgemeine Java-Themen 11
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
A Kommunikation zwischen C++ und Java-Programm Allgemeine Java-Themen 4
C JTable, Abstand zwischen Zellen Allgemeine Java-Themen 2
G Unterschiede zwischen Java 5 und 6 Allgemeine Java-Themen 5
P Unterschied zwischen Funktion und Methoden Allgemeine Java-Themen 3
T Möglichkeiten der Kommunikatin zwischen Plugins in Ecl. RCP Allgemeine Java-Themen 3
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
T JDBC: Unterschiede in Interfaces zwischen 2 Java-Versionen. Allgemeine Java-Themen 6
O Unterschied zwischen Semaphoren/Lock und ExecutorService Allgemeine Java-Themen 3
G Entscheidungsproblem für mein Vorhaben, zwischen Java und C# Allgemeine Java-Themen 35
MQue Daten-Austausch zwischen Klassen verschiedener Pakete Allgemeine Java-Themen 5
C kürzester weg zwischen zwei Punkten, Koordinaten finden Allgemeine Java-Themen 15
MQue Datenaustausch zwischen 2 Klassen Allgemeine Java-Themen 10
MQue zwischen Class zum speichern von Werten Allgemeine Java-Themen 4
I Unterschied zwischen Applet und JApplet Allgemeine Java-Themen 2
O Regex Texte zwischen html code Allgemeine Java-Themen 4
J Interaktion zwischen Klassen Allgemeine Java-Themen 4
W Beziehungen zwischen Usern ermitteln Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben