Date plus tôt qu'il y a un mois
Comment vérifier si la date est antérieure à celle il y a un mois? Quel est l'algorithme le plus rapide? Je dois prendre en compte que les différents mois ont un nombre différent de jours.
OriginalL'auteur Michał Ziober | 2010-01-15
Vous devez vous connecter pour publier un commentaire.
Mise à jour de Java 8
La classe LocalDate classe peut être utilisée:
Pour les versions précédentes, le Calendrier de la classe travail.
Exemple de code:
Imprime
java.util.Date
,java.util.Calendar
, etjava.text.SimpleTextFormat
sont maintenant héritage, supplantée par la java.de temps les classes. Voir Tutoriel Oracle.mise à jour, merci
OriginalL'auteur OscarRyz
Utilisant Joda Time:
OriginalL'auteur Vinko Vrsalovic
tl;dr
java.temps
La méthode moderne utilise le java.les classes de temps plutôt que de le gênants héritage des classes comme
Date
&Calendar
.Aujourd'hui
De la première à obtenir la date du jour. Le
LocalDate
classe représente une date uniquement de la valeur, sans le temps de la journée et sans fuseau horaire.Un fuseau horaire est crucial dans la détermination d'une date. Pour un moment donné, la date varie à travers le monde par zone. Par exemple, quelques minutes après minuit dans Paris, France est un nouveau jour, alors encore “hier” dans Montréal, Québec.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser de l'3-4 abréviation commeEST
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).Calcul de mois-il y a
Ensuite, déterminer le date il y a un mois.
Ici sont les règles utilisées par
LocalDate::minusMonths
, cité à partir de Java 8 classe doc:Ou, peut-être dans vos règles de gestion que vous avez voulu dire "30 jours" au lieu d'un mois civil.
Entrée
Vous êtes donné une date. Qui doit être transmis à votre code
LocalDate
objet.Si vous venez à partir d'une Chaîne, utilisez la norme ISO 8601 formats. Pour les autres formats, recherche de Débordement de Pile pour
DateTimeFormatter
classe.Comparaison
Maintenant comparer. Appelez le
isBefore
,isEqual
,isAfter
méthodes.Performance
Comme pour la question de la performance, évoquée dans la Question: Ne vous inquiétez pas à ce sujet. Ce mois-ci il y a le calcul et la comparaison est très peu de chances d'être un goulot d'étranglement dans votre application. Éviter l'optimisation prématurée.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.OriginalL'auteur Basil Bourque