Comment générer une date à partir du mois et de l'année en Java?
J'ai besoin de générer un nouvel objet Date pour la carte de crédit date d'expiration, je n'ai qu'un mois et une année, comment puis-je générer une Date basée sur ces deux? J'ai besoin de la manière la plus simple possible. Je lisais quelques autres réponses ici, mais ils semblent tous trop sophistiqué.
source d'informationauteur antonpug
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
java.util.Calendar
:java.temps
À l'aide de
java.time
cadre intégré dans Java 8de
String
personnalisé
DateTimeFormatter
Conversions
Pour convertir
YearMonth
à la plus standard de la date de la représentation, qui estLocalDate
.Éventuellement, d'un non-réponse étant donné que vous avez demandé une
java.util.Date
mais il semble comme une bonne occasion pour souligner que la plupart des travaux avec des dates et des heures et des calendriers en Java devrait probablement être fait avec le Joda-Time bibliothèque, auquel casvient à l'esprit.
Joda-Time a un certain nombre d'autres belles choses à propos de jours du mois. Par exemple, si vous avez voulu savoir sur le premier jour du mois en cours, vous pouvez écrire
Dans votre commentaire vous vous posez au sujet du passage d'une chaîne à l'
java.util.Date
constructeur, par exemple:Cette version du constructeur est obsolètedonc ne l'utilisez pas. Vous devez créer une date de formateur et d'appel
parse
. Il est de bon conseil, car vous aurez probablementyear
etmonth
que des valeurs entières, et vous aurez besoin pour faire une bonne chaîne, matelassés et délimité et tout ça, ce qui est incroyablement dur pour obtenir le droit dans tous les cas. Pour cette raison, l'utilisation de la date du formateur qui sait comment prendre soin de tout ça parfaitement.Autres les réponses précédentes ont montré comment faire.
Comme
Copié à partir de Créer un java.util.Objet Date de l'Année, le Mois, le Jour, le Forma
ou peut-être comme
Copié à partir de Quel est le bon Chemin pour Créer une Date en Java?
Le plus logique serait d'utiliser la Date("YYYY-MM-DD") constructeur, même si c'est déconseillé. C'est le moyen le plus facile pour créer une date à la volée. Vis de celui qui a décidé de déprécier. Longue vie à Date("YYYY-MM-DD")!!!
N'utilisez pas cette réponse. Utiliser les réponses par Przemek et Ray Toel. Comme Przemek dit, préférez utiliser un
YearMonth
pour représenter le mois et l'année. Comme disent tous les deux, si vous devez utiliser une date, utilisezLocalDate
c'est un jour sans pour le moment de la journée.Si vous avez absolument intimement besoin d'un bon vieux
java.util.Date
objet d'un héritage de l'API que vous ne pouvez pas changer, voici un moyen facile d'en obtenir un. Il peut ne pas fonctionner comme vous le souhaitez, il peut ne pas vous donner exactement la date que vous avez besoin, cela dépend de vos besoins exacts.Sur mon ordinateur cela s'imprime
Ce que nous avons obtenu est le premier jour du mois à minuit dans mon fuseau horaire local — plus précisément, mon JVM du paramètre de fuseau horaire. C'est une bonne deviner ce que votre héritage de l'API s'attend, mais c'est aussi dangereux. La JVM du paramètre de fuseau horaire peut être modifié sous nos pieds par les autres parties du programme ou par d'autres programmes en cours d'exécution dans la même JVM. En d'autres termes, on ne peut pas vraiment être sûr de ce que nous obtenons.
Le fuseau horaire problème est encore pire si la date est transmis à un ordinateur exécutant un fuseau horaire différent, à l'instar du client vers le serveur, ou vice versa, ou à une base de données de son propre fuseau horaire. Il y a environ 50 % de risque que votre
Date
viendra une fois dans le mois précédent.Si vous connaissez le fuseau horaire requis en fin de compte, il vous aidera à spécifier par exemple
ZoneId.of("America/New_York")
au lieu de la valeur par défaut du système dans l'extrait ci-dessus.Si votre API est clément et juste besoin d'un certain point dans le mois, vous serez mieux en lui donnant le 2 du mois UTC ou le 3 du mois dans votre propre fuseau horaire. Voici comment faire de l'ancien: