Date de la mise en forme basée sur les paramètres régionaux de l'utilisateur sur android
Je veux afficher une date de naissance sur la base des paramètres régionaux de l'utilisateur. Dans mon application, l'un de mes champs est la date de naissance, qui est actuellement dans le format dd/mm/yyyy
. Donc, si l'utilisateur modifie ses paramètres régionaux, le format de la date doit également évoluer en conséquence. Tous les pointeurs ou des exemples de code serait vraiment m'aider à surmonter le problème.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le DateFormat classe qui formate une date selon les paramètres régionaux de l'utilisateur.
Exemple:
Vous pouvez utiliser les différentes méthodes
getLongDateFormat
,getMediumDateFormat
selon le niveau de détail que vous aimeriez avoir.android.text.format.DateFormat.getDateFormat(context)
retourne simplementjava.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT)
. En fait, lacontext
argument n'est pas encore utilisé. Je pense que je préfère l'utiliser justejava.text.DateFormat.getDateInstance(DateFormat.SHORT)
directement.Pour modifier le format de date selon les paramètres régionaux, le code suivant a travaillé pour moi:
Ensuite, lorsque vous modifiez les paramètres régionaux, le format de la date de changement de base sur elle.
Pour plus d'informations sur les dates des modèles:
http://docs.oracle.com/javase/tutorial/i18n/format/dateFormat.html
Api Android offrent moyen simple pour afficher localisée format de date.
Le code suivant fonctionne.
Vous pouvez vérifier le code suivant.
Aussi simple que
Pour date + heure:
Pour seulement date:
Alors que l'on a accepté la réponse est correcte lorsque la question a été posée, il a plus tard de devenir obsolètes. Je suis en contribuant à la réponse moderne.
java.temps et ThreeTenABP
Il donne de sortie différents selon les paramètres régionaux de la JVM (généralement à partir de l'appareil). Par exemple:
Born: 91-10-13
Born: 1991/10/13
Born: 13.10.91
Born: 13/10/91
Si vous souhaitez un format plus long, vous pouvez spécifier un format différent style. Exemple de sorties dans l'anglais des usa paramètres régionaux:
FormatStyle.SHORT
:Born: 10/13/91
FormatStyle.MEDIUM
:Born: Oct 13, 1991
FormatStyle.LONG
:Born: October 13, 1991
FormatStyle.FULL
:Born: Thursday, October 13, 1991
Question: puis-je utiliser java.le temps sur Android?
Oui, java.de temps fonctionne très bien sur les anciens et les nouveaux appareils Android. Il faut juste au moins Java 6.
org.threeten.bp
avec des sous-paquets.Question: puis-je accepter la saisie de l'utilisateur dans le local de l'utilisateur format?
Oui, vous le pouvez. Le formateur peut également être utilisé pour l'analyse d'une chaîne à partir de l'utilisateur dans un
LocalDate
:Je suggère que vous devez d'abord formater un exemple de la date et de l'afficher à l'utilisateur, de sorte qu'il peut voir quel format de votre programme attend de ses paramètres régionaux. À titre d'exemple la date de prendre une date avec jour du mois supérieur à 12 et an de plus que 31 de sorte que l'ordre du jour, du mois et de l'année peut être vu à partir de l'exemple (pour plus de formats de l'année n'a pas d'importance puisqu'il va être quatre chiffres).
L'analyse va jeter un
DateTimeParseException
si l'utilisateur a entré la date dans un format incorrect ou d'une date de validité. L'attraper et de permettre à l'utilisateur d'essayer de nouveau.Question: puis-je faire de même avec une heure de la journée? Une date et une heure?
Oui. Pour le formatage d'un moment de la journée selon un locale de l'utilisateur, obtenir un formateur de
DateTimeFormatter.ofLocalizedTime
. Pour à la fois la date et l'heure ensemble, utiliser l'une des versions surchargées deDateTimeFormatter.ofLocalizedDateTime
.Éviter la DateFormat, SImpleDateFormat et classes de Date de
Je vous recommande de ne pas utiliser
DateFormat
,SimpleDateFormat
etDate
. Ces classes sont mal conçus et dépassée depuis longtemps, les deux premiers en particulier notoirement difficile. Au lieu d'utiliserLocalDate
,DateTimeFormatter
et d'autres classes de java.le temps, le moderne Java date et l'heure de l'API.Liens
java.time
a été décrite pour la première.java.time
de Java 6 et 7 (ThreeTen pour JSR 310).Pour obtenir la date format de modèle, vous pouvez le faire :
Après cela, vous pouvez formater votre entrée comme par le modèle.