Convertit une chaîne de jour de la semaine (pas de date exacte)
Je reçois un String
qui est un énoncé jour de la semaine, par exemple du lundi. Maintenant, je veux obtenir le nombre entier constant représentation de ce jour, qui est utilisé dans java.util.Calendar
.
Dois-je vraiment faire if(day.equalsIgnoreCase("Monday")){...}else if(...){...}
sur mon propre? Est-il soigné? Si je creuse le SimpleDateFormat
et le mélanger avec le Calendar
je produire presque autant de lignes que de taper le laid si-sinon-à-infitity statetment.
C'est en hurlant
Astuce: Plutôt que de passer autour de ces chaînes pour les jours de la semaine, passer autour de
enum
.Astuce: Plutôt que de passer autour de ces chaînes pour les jours de la semaine, passer autour de
java.time.DayOfWeek
les objets pré-définis dans le protocole enum.
OriginalL'auteur Franz Kafka | 2013-08-14
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
SimpleDateFormat
il peut également analyser la journée pour unLocale
java.util.Date
,java.util.Calendar
, etjava.text.SimpleTextFormat
sont maintenant héritage, supplantée par la java.de temps les classes.OriginalL'auteur René Link
J'utilise généralement un enum, bien que dans ce cas votre entrée doit être dans le bon cas.
Maintenant, vous pouvez obtenir le jour de la semaine comme suit:
Ce serait vous donner la suite de sortie:
java.util.DayOfWeek
. Pistes 1 à 7 pour lundi-dimanche par ISO 8601 standard.OriginalL'auteur Amar
java.temps
Pour quiconque s'intéresse à Java 8 solution, cela peut être réalisé avec quelque chose de similaire à ceci:
De sortie est la suivante:
OriginalL'auteur tete
Vous pourriez faire quelque chose comme ceci:
Bien que ce serait probablement une bonne idée de déclarer les jours de la semaine, de sorte que vous n'avez pas à garder les déclarant à chaque fois que la méthode est appelée.
Pour les autres sens, quelque chose comme ceci:
Oh, désolé. Je dois avoir mal interprété. Sera mise à jour de réponse.
OriginalL'auteur Josh M
Envisager d'utiliser une méthode d'assistance comme
S'il vous plaît, notez que l'utilisation de Chaînes de caractères avec
switch-case
est uniquement pris en charge Java 7 et suivantes.OriginalL'auteur Ravi Thapliyal
Pour non-anglais jour de la semaine, les noms, voir Réponse par tete.
tl;dr
java.temps
Si votre jour de la semaine, les noms se trouvent être la pleine longueur du nom en anglais (lundi, mardi, etc.), qui coïncide avec le nom de l'énumération des objets définis dans le
DayOfWeek
enum.Convertir vos entrées en majuscules, et les analyser pour obtenir un objet constant pour le jour de la semaine.
Maintenant que nous avons une pleine fonctionnalité de l'objet plutôt qu'une chaîne, demander le nombre entier qui est du jour de la semaine où lundi est le 1er et le dimanche de 7 personnes (standard ISO 8601 définition).
Utilisation
DayOfWeek
des objets plutôt que des chaînes deJe vous exhorte à minimiser l'utilisation de la soit le nom ou le numéro de jour de la semaine. Au lieu de cela, utilisation
DayOfWeek
objets chaque fois que possible.Par la manière, vous pouvez localiser le jour de la semaine nom automatiquement.
Que la localisation est une façon seulement par le biais de la
DayOfWeek
classe. Aller dans l'autre direction dans des langues autres que l'anglais, voir le Réponse par tete.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
Pourquoi ne pas initialiser ce que vous voulez une fois?
OriginalL'auteur Tala
Pourquoi ne pas déclarer une Carte:
Puis, quand vous en avez besoin pour effectuer une recherche:
Ceci devrait faire ce dont vous avez besoin. Vous pouvez même charger les données à partir d'un fichier /base de données, etc.
OriginalL'auteur Martin
Si vous utilisez java 8 :
Puis il suffit d'utiliser: DayOfWeek.[JOUR].getValue()
Pour les anciennes version de vérifier cette réponse:
Convertit une chaîne de jour de la semaine (pas de date exacte)
OriginalL'auteur Deepak Kumar
Utiliser les noms construit dans le
DateFormatSymbols
classe comme suit. Cela renvoie 0 pour dimanche, 6 pour le samedi, et -2 pour tout non valide les jours. Ajoutez votre propre erreur de manipulation que vous voyez l'ajustement.OriginalL'auteur Dawood ibn Kareem