Nächsten Montag ermitteln

C

CalendarNoob

Gast
Hallo,

ich habe zwei Date-Objekte
Code:
Date startDate
und
Code:
Date endDate
, die ich einer Funktion übergeben möchte.

Wenn z.B. der 15.11.2011 übergeben wird, dann soll der nächste Montag als
Code:
startDate
genommen werden.

Habe es so versucht, aber funktioniert nicht.

Java:
public class TestDate {

public static void main(String[] argv) {

Date startDate = new Date();
					
					SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
					try {
						startDate = df.parse("2011-11-17");
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
					int weekday = now.get(Calendar.DAY_OF_WEEK);  
					if (weekday != Calendar.MONDAY)  
					{
					    int days = (Calendar.SATURDAY - weekday + 2) % 7;  
					    now.add(Calendar.DAY_OF_YEAR, days);  
					}  
					
					Date date = startDate;  
					String format = new SimpleDateFormat("yyyy.MM.dd").format(date);  
					
					System.out.println(format);
}
}

Kann jemand helfen?
 
C

CalendarNoob

Gast
Hab's versucht, aber haut nicht hin:

Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {

	public static void main(String[] argv) {

		Date startDate = new Date();
		
		Calendar now = Calendar.getInstance();

		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		try {
			startDate = df.parse("2011-11-16");
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		
		
		int weekday = now.get(Calendar.DAY_OF_WEEK);
		weekday++;
		
//		if (weekday != Calendar.MONDAY) {
//			int days = (Calendar.SATURDAY - weekday + 2) % 7;
//			now.add(Calendar.DAY_OF_YEAR, days);
//		}
		
		now.add(weekday, 7);

		Date date = now.getTime();;
		String format = new SimpleDateFormat("yyyy.MM.dd").format(date);

		System.out.println(format);
	}
}
 

Gossi

Bekanntes Mitglied
Suchst du sowas?

Java:
public static void main(final String[] argv) {

		Date startDate = new Date();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		int abstand = 0;
		System.out.println(df.format(startDate));
		if (Calendar.DAY_OF_WEEK != Calendar.MONDAY) {
			abstand = Calendar.MONDAY - Calendar.DAY_OF_WEEK;
			if (abstand < 0) {
				abstand *= -1;
			}
		}
		long millis = startDate.getTime() + (86400000 * (abstand + 1));
		Date neuesDatum = new Date(millis);
		System.out.println(df.format(neuesDatum));
	}
 
S

SlaterB

Gast
was soll denn
> weekday++;
bedeuten?
entweder mit set() den Weekday auf Montag setzen, wie vorgeschlagen wurde,
oder das Originalprogramm weiterbenutzen, scheint schon weitgehend zu stimmen,
nur
> Date date = now.getTime();
fehlte im ersten Code noch, da war es ganz egal was mit now passierte,
die Definition von now + überhaupt Verknüpfung mit startdate fehlte auch, davon ganz abgesehen..
 
C

CalendarNoob

Gast
Funktioniert nun perfekt:

Java:
private Date setStartDateToMonday(Date startDate) throws ParseException {
		Calendar getNextMonday = Calendar.getInstance();
		getNextMonday.setTime(startDate);

		int weekday = getNextMonday.get(Calendar.DAY_OF_WEEK);
		if (weekday != Calendar.MONDAY) {
			int days = (Calendar.SATURDAY - weekday + 2) % 7;
			getNextMonday.add(Calendar.DAY_OF_YEAR, days);
		}
		Date date = getNextMonday.getTime();
		return date;
	}

Wenn ich nun den vergangenen Sonntag bestimmen könnte, wäre ich überglücklich. Jemand vielleicht einen schnellen Tipp, was ich an meinem Code ändern muss?
 
S

SlaterB

Gast
hmm, das ist doch dasselbe, nur in grün statt gelb und eckig statt rund,
du musst abziehen bzw. negatives addieren und zwar wieder relativ zum aktuellen Tag,

> Calendar.SATURDAY - weekday
als Standard kann bleiben,
danach +2 steht für nächsten Montag, +1 wäre was anderes, -60 wäre was anderes, musst nur irgendwas passendes finden..,
das % 7 kann im Moment natürlich begrenzen.., sollte vielleicht vor dem +2 oder anderes passieren
 
C

CalendarNoob

Gast
Stimmt, war auch irgendwie sinnfrei danach zu fragen. Das Datum um den vergangenen Sonntag zu bestimmen:

Java:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {

	public static void main(String[] argv) throws ParseException {
		
		Date startDate = new Date();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
		startDate = df.parse("2011-11-01");
		df.format(startDate);
		
		Calendar now = Calendar.getInstance();
		now.setTime(startDate);
	
		 int weekday = now.get(Calendar.DAY_OF_WEEK);  
         if (weekday != Calendar.MONDAY)  
         {
             int days = (Calendar.SATURDAY - weekday - 6) % 7;  
             now.add(Calendar.DAY_OF_YEAR, days);  
         }  
         
         Date date = now.getTime();
         String format = new SimpleDateFormat("yyyy.MM.dd").format(date);  
         
         System.out.println(format);
		
	}
}


Danke euch für eure großartige Hilfe!
 
C

CalendarNoob

Gast
Bin noch nicht ganz fertig. Kann ich obigen Code auch benutzen, wenn ich das übergebene Startdatum auf den 1. des nächsten Monats setzen möchte? Wie würd ich das in diesem Fall machen?
 
S

SlaterB

Gast
statt DAY_OF_WEEK geht es um einen anderen DAY, statt MONDAY um einen anderen einfachen Wert,
aber hier kann man dann auch wirklich mit der set-Methode direkt den gewünschten Monatstag setzen
 
C

CalendarNoob

Gast
Hi,

habe das versucht, aber es gibt mir den 1. des aktuellen Monats zurück.

Java:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {

	public static void main(String[] argv) throws ParseException {

		Date today = new Date();
		DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		
		today = sdf.parse("2011-08-23");

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(today);

		calendar.set(Calendar.DAY_OF_MONTH, 1);

		Date firstDayOfMonth = calendar.getTime();

		
		System.out.println("Heute                         : " + sdf.format(today));
		System.out
				.println("Erster Tag des nächsten Monats: " + sdf.format(firstDayOfMonth));

	}
}

Stimmt ja nicht ganz. Was muss ich bei
Java:
calendar.set(Calendar.DAY_OF_MONTH, 1);
ändern?
 
S

SlaterB

Gast
> habe das versucht, aber es gibt mir den 1. des aktuellen Monats zurück.

was um Himmels Willen hast du anderes erwartet? wenn das bei diesem Code nicht so wäre, dann wäre ich besorgt..

dass es um den nächsten Monat geht habe ich nicht unbedingt genau gelesen bzw. nicht gemeint als ich sagte dass es (nur) mit der set-Methode geht,
ganz offensichtlich kann man da erstmal nur sinnvoll Tage des aktuellen Monats bearbeiten

als weiteres keine Idee?
na da muss man dir wohl alles vorsagen..: nach dem bisherigen Zustand noch exakt einen Monat addieren
 

nrg

Top Contributor
wie oben geschrieben, würde ich das so machen:

Java:
		Calendar cal = Calendar.getInstance();
		cal.setTime(new Date());
		cal.set(Calendar.DAY_OF_WEEK, 2);
		cal.add(Calendar.DAY_OF_MONTH, 7);
		System.out.println(cal.getTime());

das setzt dir den Calendar auf den nächsten Montag.
 
S

SlaterB

Gast
@nrg

das ist aber ein Vorgehen nahe am Abgrund,
falls man durch das set() die Zeit vorstellt, dann wäre man schon am richtigen Tag, durch das add(7) kommt man dann eine Woche weiter,
bei Montag ist das hierzulande kaum möglich, Montag ist genau der erste Tag der Woche, mit jedem anderen Wochentag hätte man das Problem aber,

wie man an Montag == Konstante 2 sieht, ist in den USA (oder zumindest in Java-USA) der Sonntag der erste Tag der Woche, dort würde also hinsichtlich Montag das Problem bestehen:
Java:
public class Test {
    public static void main(String[] args)  {
        Date before = new Date(111, 10, 13);
        System.out.println(before);
        Calendar cal = Calendar.getInstance(Locale.US);
        cal.setTime(before);
        cal.set(Calendar.DAY_OF_WEEK, 2);
        System.out.println(cal.getTime());
        cal.add(Calendar.DAY_OF_MONTH, 7);
        System.out.println(cal.getTime());
    }
}
Ausgabe:
Code:
Sun Nov 13 00:00:00 CET 2011
Mon Nov 14 00:00:00 CET 2011
Mon Nov 21 00:00:00 CET 2011
 

nrg

Top Contributor
ahja ok, den plan habe ich mir aber auch ausgedacht, wo ich noch dachte, dass Montag der erste Tag ist ;). Naja das wäre aber dann auch nur ein if mehr.
 
C

CalendarNoob

Gast
Nach wie vor habe ich mein Problem nicht lösen können. Ich bekomme lediglich den 1. Tag des Monats des Datums und nicht den 1. des nächsten vom ausgehenden Date-Objekt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Zeitspanne bis zur nächsten Uhrzeit Java Basics - Anfänger-Themen 7
J Auf den nächsten Zehner runden? Java Basics - Anfänger-Themen 4
A Datentypen Nächsten freien index eines arrays finden Java Basics - Anfänger-Themen 5
C Übergeben von Variablen von einem Objekt zum nächsten Java Basics - Anfänger-Themen 5
G datum des nächsten tages Java Basics - Anfänger-Themen 3
D Auf Montag Prüfen? Java Basics - Anfänger-Themen 9
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
S Bildgröße ermitteln & setSize() übergeben Java Basics - Anfänger-Themen 6
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
J Datum ermitteln ? Java Basics - Anfänger-Themen 14
M Beliebtesten Film ermitteln Java Basics - Anfänger-Themen 6
C Größte Zahl aus einem Array ermitteln(als statische Methode) Java Basics - Anfänger-Themen 31
H Bei forEach Index des Elements ermitteln Java Basics - Anfänger-Themen 17
B DHCP-Server Adresse ermitteln Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
V Erste Schritte Potenzen b^n mittels Schleife ermitteln Java Basics - Anfänger-Themen 7
B Anzahl von Stunden / Tage von zwei Datumswerten ermitteln Java Basics - Anfänger-Themen 1
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
O 2 Maximalwerte und Minimalwerte aus Array ermitteln Java Basics - Anfänger-Themen 9
L Fortschritt ermitteln Java Basics - Anfänger-Themen 18
N Erste Schritte HSV color space - schwarz und weiß nur anhand von Saturation oder Multiplikator ermitteln Java Basics - Anfänger-Themen 14
N Wahrscheinlichkeiten ermitteln Java Basics - Anfänger-Themen 2
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Schwierigkeitsgrad eines Wortes mit Morsecode ermitteln Java Basics - Anfänger-Themen 18
J Best Practice Datum Differenz aus zwei Strings ermitteln Java Basics - Anfänger-Themen 8
M Erste Schritte primzahlen ermitteln, nur zahlen als eingabe erlauben Java Basics - Anfänger-Themen 34
G Größten und kleinsten Wert im Array ermitteln? Java Basics - Anfänger-Themen 7
G Wie kann ich diesen Wert ermitteln? Java Basics - Anfänger-Themen 4
T Rekursiv Tiefe eines binären Suchbaums ermitteln Java Basics - Anfänger-Themen 22
D Maximale Teilsumme ermitteln Java Basics - Anfänger-Themen 6
MiMa Jüngstes Datum ermitteln Java Basics - Anfänger-Themen 4
S Compiler-Fehler im array Maximum ermitteln Java Basics - Anfänger-Themen 6
V Querprodukt ermitteln Java Basics - Anfänger-Themen 6
L Array: Summe aller geraden und ungeraden Zahlen ermitteln Java Basics - Anfänger-Themen 9
Joew0815 Int to string und primzahle ermitteln Java Basics - Anfänger-Themen 2
F Jalousie Positionen ermitteln Java Basics - Anfänger-Themen 4
C Klassen aus einem Package ermitteln und per Laufzeit laden Java Basics - Anfänger-Themen 17
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
L Aus Datum Millisekunden ermitteln ohne Zeitzonen-Berücksichtigung Java Basics - Anfänger-Themen 6
C OOP Schwerpunkt eines Dreiecks ermitteln Java Basics - Anfänger-Themen 4
I Zeitraum eines Monats ermitteln und in String ausgeben Java Basics - Anfänger-Themen 1
S Datentypen Dimensionalität eines Arrays ermitteln Java Basics - Anfänger-Themen 2
V Anzahl von gleichen Werten in einem Int-Array ermitteln Java Basics - Anfänger-Themen 4
D TreeMap: Höheren Key ermitteln und den Value liefern Java Basics - Anfänger-Themen 3
J In einem Array die größte Zahl ermitteln und Faktorisieren. Java Basics - Anfänger-Themen 5
V Array ermitteln - in Quellcode speichern Java Basics - Anfänger-Themen 15
H JEditorPane: ermitteln, ob Zeichen unterstrichen Java Basics - Anfänger-Themen 4
M Monat der letzen 12 Monate ermitteln Java Basics - Anfänger-Themen 8
MiMa String Datum ermitteln Java Basics - Anfänger-Themen 9
H Veränderung eines Objekts ermitteln Java Basics - Anfänger-Themen 6
S Wochentage ermitteln Java Basics - Anfänger-Themen 5
S Ermitteln und Setzen der Attribute eines Objektes Java Basics - Anfänger-Themen 6
F Den Gewinner der Tordifferenz ermitteln Java Basics - Anfänger-Themen 5
J Eltern-Fenster ermitteln Java Basics - Anfänger-Themen 2
S MP3 Spielzeit mit jid3lib ermitteln? Java Basics - Anfänger-Themen 3
M Größer der eigenen .jar ermitteln Java Basics - Anfänger-Themen 4
M Größe einer Datei via. Link ermitteln Java Basics - Anfänger-Themen 9
R Alle Klassen ermitteln, die Interface implementieren / Reflection Java Basics - Anfänger-Themen 51
W Position in ArrayList ermitteln Java Basics - Anfänger-Themen 4
B Font Namen ermitteln Java Basics - Anfänger-Themen 7
C least significant bit einer HexMaske für Bitshift ermitteln Java Basics - Anfänger-Themen 2
B Pfad einer .jar im Programm ermitteln Java Basics - Anfänger-Themen 13
H "Index" eines Button ermitteln Java Basics - Anfänger-Themen 7
C Bereits geöffnetes Object ermitteln Java Basics - Anfänger-Themen 5
S ermitteln eines Wertes im StringArray Java Basics - Anfänger-Themen 4
D Ermitteln des kleinsten Messwertes von jedem Tag Java Basics - Anfänger-Themen 15
C Hösten Wert aus mehren Listen ermitteln Java Basics - Anfänger-Themen 2
D Input/Output Pfad richtig ermitteln Java Basics - Anfänger-Themen 12
P Dateigröße von Ordnern ermitteln Java Basics - Anfänger-Themen 8
T Enum - Key als Value ermitteln Java Basics - Anfänger-Themen 7
J den x und y Wert beim klicken der Maus ermitteln Java Basics - Anfänger-Themen 2
M float/double Anzahl Nachkommastellen ermitteln Java Basics - Anfänger-Themen 18
G Sekunden bis zum Ende der aktuellen Kalenderwoche ermitteln! Java Basics - Anfänger-Themen 3
F Substring mittels RegEx ermitteln/ersetzen? Java Basics - Anfänger-Themen 2
M Datentypen Generics: Exacten Typ ermitteln Java Basics - Anfänger-Themen 6
Spin Backgrond Color von Image ermitteln Java Basics - Anfänger-Themen 2
M Größe einer Konsole ermitteln Java Basics - Anfänger-Themen 2
c_sidi90 Größe von Dateien aus File Array ermitteln Java Basics - Anfänger-Themen 12
P Ermitteln aller perfekten Zahlen Java Basics - Anfänger-Themen 12
D Pfad zu "Eigenen Dateien" ermitteln Java Basics - Anfänger-Themen 8
A Relativer Pfad zu einem File ermitteln Java Basics - Anfänger-Themen 2
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
M Datentypen Wrapperclass eines Primitives ermitteln Java Basics - Anfänger-Themen 4
StrikeTom Shift + pfeiltaste ermitteln Java Basics - Anfänger-Themen 3
H Wie Projekt-Ordner-Pfad ermitteln? Java Basics - Anfänger-Themen 11
A Aktueller Pfad des Programms (.jar) ermitteln Java Basics - Anfänger-Themen 10
P Externe IP ermitteln? Java Basics - Anfänger-Themen 5
J Das Maximum einer Liste ermitteln Java Basics - Anfänger-Themen 8
S Klassennamen ermitteln Java Basics - Anfänger-Themen 10
R Stoppuhr: Zeit ermitteln und übergeben - Variable static?? Java Basics - Anfänger-Themen 6
T PixelFarbe ermitteln und in Fenster zeichnen Java Basics - Anfänger-Themen 12
W Average-Color (Durchschnittsfarbe eines Bildes ermitteln) Java Basics - Anfänger-Themen 16
D Ermitteln der Anzahl gleicher Nachkommastellen 2er Zahlen Java Basics - Anfänger-Themen 9
P Zeilenanzahl einer *.txt ermitteln Java Basics - Anfänger-Themen 6
B Teiler einer Zahl ermitteln Java Basics - Anfänger-Themen 12
H Dimensionen eines 2D-Arrays ermitteln Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben