Dans Joda-Time , existe-t-il un moyen d'obtenir la date du premier jour de la semaine (lundi).
par exemple, je veux savoir quelle date était cette semaine lundi sur la base de la date actuelle 21/01/11
Bravo à l'avance.
edit: je souhaite également trouver la date de fin de semaine c'est-à-dire la date du dimanche. à votre santé
Essayez LocalDate.withDayOfWeek :
LocalDate now = new LocalDate();
System.out.println(now.withDayOfWeek(DateTimeConstants.MONDAY)); //prints 2011-01-17
System.out.println(now.withDayOfWeek(DateTimeConstants.SUNDAY)); //prints 2011-01-23
LocalDate today = new LocalDate();
LocalDate weekStart = today.dayOfWeek().withMinimumValue();
LocalDate weekEnd = today.dayOfWeek().withMaximumValue();
Vous donnera les premier et dernier jours, c'est-à-dire le lundi et le dimanche
Une autre option consiste à utiliser roundFloorCopy . Cela ressemble à ceci:
LocalDate startOfWeek = new LocalDate().weekOfWeekyear().roundFloorCopy();
Pour le dernier jour de la semaine standard (dimanche) utilisez roundCeilingCopy et minusDays …
LocalDate lastDateOfWeek = new LocalDate().weekOfWeekyear().roundCeilingCopy().minusDays( 1 );
Fonctionne également pour DateTime. Et fonctionne en fin de semaine (exclusif).
DateTime dateTime = new DateTime();
DateTime startOfWeek = dateTime.weekOfWeekyear().roundFloorCopy();
DateTime endOfWeek = dateTime.weekOfWeekyear().roundCeilingCopy();
Dump sur console…
System.out.println( "dateTime " + dateTime );
System.out.println( "startOfWeek " + startOfWeek );
System.out.println( "endOfWeek " + endOfWeek );
Lors de l'exécution ...
dateTime 2014-01-24T00:00:34.955-08:00
startOfWeek 2014-01-20T00:00:00.000-08:00
endOfWeek 2014-01-27T00:00:00.000-08:00
Vous pouvez utiliser la méthode getDayOfWeek () qui vous donne 1 pour lundi, 2 pour mar, .., 7 pour dimanche afin de remonter autant de jours et atteindre lundi:
import org.joda.time.DateTime;
public class JodaTest {
public static void main(String[] args) {
DateTime date = new DateTime();
System.out.println(date);
//2011-01-21T15:06:18.713Z
System.out.println(date.minusDays(date.getDayOfWeek()-1));
//2011-01-17T15:06:18.713Z
}
}
Voir la section "Querying DateTimes" du guide d'utilisation de Joda-Time .
Voici l'algorithme général que je suivrais:
dateTime.minusDays(n)