La meilleure Façon de vérifier si un java.util.La Date est âgé de plus de 30 jours par rapport à l'heure actuelle, dans le temps?
Voici ce que je veux faire:
Date currentDate = new Date();
Date eventStartDate = event.getStartDate();
Comment vérifier si eventStartDate est de plus de 30 jours de plus que currentDate?
Je suis à l'aide de Java 8, Calendrier n'est pas préféré.
Fuseau horaire est ZoneId.systemDefault().
Quelle partie de la journée en cours? Quel fuseau horaire? Qu'est-ce que "un mois" avant le 30 Mars ou après le 30 janvier? (Il n'est pas clair si ce que vous entendez par "un mois à partir du jour actuel".) Êtes-vous à l'aide de Java 8, et pouvez-vous utiliser Joda Temps sinon? (Cela peut être fait avec java.util.Calendrier, mais je voudrais éviter si possible.)
Actuelle de jour comme de new Date(). Les 30 jours. Je ne l'utilisation de Java8. Je ne veux pas utiliser le Calendrier.
"En cours de jour comme de new Date()" - qui ne spécifiez pas un jour. Il spécifie un point dans le temps. Un point dans le temps qui est le 25 Mars, à Londres, peut-être le 24 Mars à San Francisco, par exemple. Nous avons donc besoin de savoir quel est le fuseau horaire à utiliser. Et "30 jours" n'est pas la même chose qu'un mois... si vous avez vraiment moyen 30 jours, veuillez modifier votre question de le dire.
Il a certainement est un problème, sauf si vous voulez traiter de "30 jours" que "30 * 24 heures", en ignorant l'heure d'été. Quelque chose qui se produit à 1:30 heure locale peut être exactement 30 * 24 heures avant quelque chose qui se produit à 2 h 30 du matin, heure locale, par exemple. Avec plus de contexte, nous pourrions vous aider à beaucoup plus...
Bon, alors vous avez très probablement souhaitez utiliser Helsinki que le temps de la zone de calcul. Ou vous devez préciser la condition de celui qui l'a demandé. Dire "ce n'est pas une question de" juste suggère qu'il n'a pas été pris en compte. (Le fait qu'il est exprimé en tant que "la date du jour" est assez inquiétant pour commencer... sommes-nous supposer qu'il est vraiment "le point actuel dans le temps"?)
Actuelle de jour comme de new Date(). Les 30 jours. Je ne l'utilisation de Java8. Je ne veux pas utiliser le Calendrier.
"En cours de jour comme de new Date()" - qui ne spécifiez pas un jour. Il spécifie un point dans le temps. Un point dans le temps qui est le 25 Mars, à Londres, peut-être le 24 Mars à San Francisco, par exemple. Nous avons donc besoin de savoir quel est le fuseau horaire à utiliser. Et "30 jours" n'est pas la même chose qu'un mois... si vous avez vraiment moyen 30 jours, veuillez modifier votre question de le dire.
Il a certainement est un problème, sauf si vous voulez traiter de "30 jours" que "30 * 24 heures", en ignorant l'heure d'été. Quelque chose qui se produit à 1:30 heure locale peut être exactement 30 * 24 heures avant quelque chose qui se produit à 2 h 30 du matin, heure locale, par exemple. Avec plus de contexte, nous pourrions vous aider à beaucoup plus...
Bon, alors vous avez très probablement souhaitez utiliser Helsinki que le temps de la zone de calcul. Ou vous devez préciser la condition de celui qui l'a demandé. Dire "ce n'est pas une question de" juste suggère qu'il n'a pas été pris en compte. (Le fait qu'il est exprimé en tant que "la date du jour" est assez inquiétant pour commencer... sommes-nous supposer qu'il est vraiment "le point actuel dans le temps"?)
OriginalL'auteur Steve Waters | 2015-03-25
Vous devez vous connecter pour publier un commentaire.
Bon, en supposant que vous voulez vraiment être "30 jours" dans le fuseau horaire par défaut, je voudrais utiliser quelque chose comme:
Si "trente jours" a été autour d'un changement d'heure d'été, vous devez vérifier que la documentation de
plusDays
vous donne le comportement que vous voulez:Sinon, vous pourrait soustraire 30 "24 heures" jours, ce qui serait certainement plus simple, mais elle peut donner des résultats inattendus en termes de modifications de l'heure d'été.
OriginalL'auteur Jon Skeet
Vous pouvez essayer ceci:
C'est disguisting, mais elle devrait faire la job!!!
J'ai lu votre commentaire trop et j'ai réalisé qu'entendez-vous par 24 heures. Vous avez raison, il n'est pas clair que veut-il dire par la date du jour-30, mais il existe des méthodes pour tronquer une date, de sorte qu'il n'est pas impossible à résoudre.
N'oubliez pas d'ajouter "l" après le premier nombre ("30l") pour laisser votre compilateur sait que les opérations sont effectuées sur des numéros longs - sinon vous allez dépasser la gamme de Entier et le résultat sera tout à fait tort.
OriginalL'auteur gaRos