L'obtention de début et la date de fin d'une semaine à l'aide de java calendrier de la classe
Je veux obtenir la dernière et la première semaine d'une semaine pour une date donnée.
e.g si la date est le 12 octobre 2011, puis j'ai besoin de la date du 10 octobre 2011 (la date de début de la semaine) et le 16 octobre 2011 (la date de fin de la semaine)
Quelqu'un sait-il comment obtenir ces 2 dates à l'aide du calendrier de la classe (java.util.Le calendrier).
merci beaucoup!
J'ai eu quelque chose de similaire, ce qui rend beaucoup plus simple joda-time.sourceforge.net
OriginalL'auteur user421607 | 2011-10-04
Vous devez vous connecter pour publier un commentaire.
Code comment le faire avec le
Calendar
objet. Je devrais aussi mentionner joda time library car il peut vous aider à beaucoup deDate/Calendar
problèmes.Code
last.add(Calendar.DAY_OF_YEAR, 6);
oups, my bad. Je pensais que c'était l'année 🙂 désolé, votre réponse est correcte
Cette échoue dans certains cas, lorsque les paramètres régionaux définit le début de la semaine pour que quelque chose d'autre que le dimanche. Par exemple, ici en Italie, le début de la semaine est le lundi, donc quand
cal
est dimanche, vous avez lafirst.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK)
estMON - SUN
qui est2 - 1
, si vous ajoutez les jours au lieu de soustraire. Cette cause de votrefirst
etlast
dates à tort d'automne la semaine prochaine. Une solution est de faire en sorte que le décalage est toujours nul ou négatif, je.e:int weekDayOffset = first.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK); if (weekDayOffset > 0) weekDayOffset -= 7;
OriginalL'auteur dacwe
Cette solution fonctionne pour tous les paramètres régionaux (premier jour de la semaine pourrait être un dimanche ou lundi).
Par exemple, aujourd'hui, c'est Jan, 29 2014. Pour les paramètres régionaux avec le dimanche comme premier jour de la semaine, vous obtiendrez:
Pour les paramètres régionaux avec lundi comme premier jour, les dates seront:
OriginalL'auteur Akima
Si vous voulez toutes les dates, puis
OriginalL'auteur LMK
Voici un exemple de code
qui permet d'imprimer
OriginalL'auteur Visruth
J'ai trouvé la formule de la accepté de répondre ne fonctionne que dans certains cas. Par exemple, votre semaine commence le samedi et aujourd'hui, c'est dimanche. Pour arriver au premier jour de la semaine, nous retournons à pied en 1 jour, mais la formule
cal.get(Calendar.DAY_OF_WEEK) - cal.getFirstDayOfWeek()
donnera la réponse à -6. La solution est d'utiliser un module de sorte que la formule s'enroule autour pour ainsi dire.Désolé @mhatch - fait maintenant
OriginalL'auteur 34m0