Zum Inhalt springen

Kalenderwoche aus dem Datum?


Empfohlene Beiträge

Geschrieben

Ist es möglich, dass ich aus einem Datumsfeld vom Typ date mir irgendwie die Kalenderwoche herausholen kann?

Sodass ich eine Folge von Datumsanzeigen habe und dazu die dazugehörige Kalenderwoche.

Geschrieben

Mit der Klasse GregorianCalender ist so etwas möglich.


GregorianCalendar gc = new GregorianCalendar();

gc.setTime(new Date());

System.out.println(gc.get(GregorianCalendar.WEEK_OF_YEAR));

Geschrieben

Oder so:

public static synchronized Integer getWeekFromDate( Date date ) {

	if ( date == null ) {

		return null;

	}


        Calendar toolCalendar = Calendar.getInstance();


	toolCalendar.clear();

	toolCalendar.setTime( date );


	int week = toolCalendar.get( Calendar.WEEK_OF_YEAR );


	return new Integer( week );

}

Geschrieben
Oder so:

public static synchronized Integer getWeekFromDate( Date date ) {

	if ( date == null ) {

		return null;

	}


        Calendar toolCalendar = Calendar.getInstance();


	toolCalendar.clear();

	toolCalendar.setTime( date );


	int week = toolCalendar.get( Calendar.WEEK_OF_YEAR );


	return new Integer( week );

}

soweit, sogut. Warum nur static synchronized und die Wrapperklasse Integer statt einfach int?

Geschrieben

Integer, weil wir die immer benutzen. int hätte hier wahrscheinlich gereicht.

static syncronized, weil ich das bei uns aus ner Toolklasse geliehen habe.

Ich wußte einfach das ich sowas schonmal gesehn hab.

Die Kurzform:

public int getWeekFromDate( Date date ) {

	if ( date == null ) {

		return null;

	}


        Calendar toolCalendar = Calendar.getInstance();


	toolCalendar.clear();

	toolCalendar.setTime( date );


	return toolCalendar.get( Calendar.WEEK_OF_YEAR );

}

Geschrieben
Integer, weil wir die immer benutzen. int hätte hier wahrscheinlich gereicht.

Nur interessehalber gefragt, gibt es dafür einen speziellen Grund/Vorteil?

Weil Integer ist natürlich langsamer als der Basisdatentyp.

Geschrieben
Integer, weil wir die immer benutzen. int hätte hier wahrscheinlich gereicht.

static syncronized, weil ich das bei uns aus ner Toolklasse geliehen habe.

Ich wußte einfach das ich sowas schonmal gesehn hab.

ok. static macht sinn.

aber synchronized macht

a) ueberhaupt keinen Sinn und

B) ist extrem teuer.

gruss

Geschrieben

synchronized, weil die Methode eine SharedInstance eines Calendar-Objects verwendet. synchronized stellt sicher, dass diese Methoden jeweils nur von einem Thread aufgerufen werden. Dies ist wichtig, da sonst folgende Konstellation auftreten könnte:

Thread 1 ruft eine DateTools-Methode auf und initiert Calendar1

Thread 2 ruft eine DateTools-Methode auf und initiert Calendar2

Die Methode von Thread 1 ist fertig und liefert einen falschen Wert, weil sie mit Calendar2 gearbeitet hat.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...