Comment formater correctement en fonction de la date et de l'heure de configuration de l'appareil lorsque vous avez une année, un mois, un jour, une heure et une minute?
321
Utilisez la classe Java DateFormat standard.
Par exemple, pour afficher la date et l'heure actuelles, procédez comme suit:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
Vous pouvez initialiser un objet Date avec vos propres valeurs, mais vous devez savoir que les constructeurs sont obsolètes et que vous devez vraiment utiliser un objet Java Calendar.
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
la dateFormat retournée est de typejava.text.DateFormat
(et NONandroid.text.format.DateFormat
)À mon avis,
android.text.format.DateFormat.getDateFormat(context)
cela me rend confus car cette méthode renvoiejava.text.DateFormat
plutôt queandroid.text.format.DateFormat
- - ".Donc, j'utilise le code de fragment comme ci-dessous pour obtenir la date / heure actuelle dans mon format.
De plus, vous pouvez utiliser d'autres formats. Suivez DateFormat .
la source
hh:mm:ss
cela vous donnera01:00:00
pour 13 heures, vous devrez utiliserkk:mm:ss
pour obtenir13:00:00
k
est une heure dans la journée (1-24), ne voulez-vous pas direH
, qui est une heure dans la journée (0-23), par exemple. HH: mm: ss? Voir: developer.android.com/reference/java/text/SimpleDateFormat.htmljava.text.SimpleDateFormat
(ce que vous avez lié et utiliséH
pendant des heures dans la plage 0-23) etandroid.text.format.DateFormat
(ce que la réponse concerne et utilisek
pendant des heures dans la plage 0-23)k
, cependant, la documentationDateFormat
indique clairement Pour la documentation canonique des chaînes de format, voir SimpleDateFormat. Très perturbant. Ou est-ce que je manque quelque chose?Vous pouvez utiliser
DateFormat
. Le résultat dépend des paramètres régionaux par défaut du téléphone, mais vous pouvez également spécifier les paramètres régionaux:https://developer.android.com/reference/java/text/DateFormat.html
Il s'agit de résultats sur un
FR Locale: 3 nov. 2017
US / En Locale: 12 janv.1952
FR Paramètres régionaux: 03/11/2017
US / En Locale: 12.13.52
FR Locale: 3 nov. 2017
US / En Locale: 12 janv.1952
FR Paramètres régionaux: 3 novembre 2017
US / En Locale: 12 janvier 1952
FR Locale: vendredi 3 novembre 2017
US / En Locale: mardi 12 avril 1952
FR Locale: 3 nov. 2017 16:04:58
FR Paramètres régionaux: 03/11/2017 16:04
FR Paramètres régionaux: 03/11/2017 16:04:58
FR Paramètres régionaux: 03/11/2017 16:04:58 GMT + 01: 00
FR Locale: 03/11/2017 16:04:58 heure normale d'Europe centrale
FR Paramètres régionaux: 16:04:58
FR Paramètres régionaux: 16:04
FR Paramètres régionaux: 16:04:58
FR Paramètres régionaux: 16:04:58 GMT + 01: 00
FR Locale: 16:04:58 heure normale d'Europe centrale
la source
Date à Locale chaîne de date:
Options:
-> 31 déc.1969
-> 31 déc.1969 16:00:00
-> 16 h 00
la source
Cela le fera:
la source
Utilisez SimpleDateFormat
Comme ça:
la source
new SimpleDateFormat("my-format", Locale.getDefault());
Suite à ceci: http://developer.android.com/reference/android/text/format/Time.html
Est préférable d'utiliser la classe Time native Android:
Puis formatez:
la source
Utilisez ces deux comme variables de classe:
Et utilisez-le comme ceci:
la source
Ceci est ma méthode, vous pouvez définir et formater le format d'entrée et de sortie.
la source
SimpleDateFormat
J'utilise SimpleDateFormat sans modèle personnalisé pour obtenir la date et l'heure réelles du système dans le format présélectionné de l'appareil :
renvoie :
la source
Utilisez la construction dans la classe Time!
la source
Les autres réponses sont généralement correctes. Je voudrais apporter la réponse moderne. Les classes
Date
,DateFormat
etSimpleDateFormat
utilisées dans la plupart des autres réponses, sont obsolètes depuis longtemps et ont causé des problèmes à de nombreux programmeurs pendant de nombreuses années. Aujourd'hui, nous avons tellement mieux dansjava.time
, AKA JSR-310, l'API Java date et heure moderne. Pouvez-vous encore l'utiliser sur Android? Certainement! Les classes modernes ont été rétroportées vers Android dans le projet ThreeTenABP. Voir cette question: Comment utiliser ThreeTenABP dans Android Project pour tous les détails.Cet extrait devrait vous aider à démarrer:
Lorsque je règle la langue préférée de mon ordinateur sur l'anglais américain ou l'anglais britannique, ceci s'imprime:
Au lieu de cela, je le mets en danois,
Il suit donc la configuration. Je ne sais pas exactement à quel détail il suit les paramètres de date et d'heure de votre appareil, et cela peut varier d'un téléphone à l'autre.
la source
Ce code fonctionne pour moi!
la source
La classe de format de date fonctionne avec un code de triche pour faire la date. Comme
Vous pouvez vérifier plus de tricheurs ici .
la source
Ce code retournerait la date et l'heure actuelles:
la source
Lieu
Pour obtenir la date ou l'heure au format local à partir des millisecondes, j'ai utilisé ceci:
Date et l'heure
Date
Temps
Vous pouvez utiliser d'autres styles de date et d'heure. Plus d'informations sur les styles ici .
la source
Chemin le plus court:
%tR
est l'abréviation de%tH:%tM
,<
signifie réutiliser le dernier paramètre (1$
).C'est équivalent à
String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
la source
Essayer:
Et lorsque vous accédez à des variables passées:
la source
Je l'utilise comme ceci:
la source
Évitez juDate
Java.util.Date et .Calendar et SimpleDateFormat en Java (et Android) sont notoirement gênants. Évite-les. Ils sont si mauvais que Sun / Oracle les a abandonnés, les supplantant avec le nouveau package java.time en Java 8 (pas dans Android en 2014). Le nouveau
java.time
s'inspire de la bibliothèque Joda-Time .Joda-Time
Joda-Time fonctionne sur Android.
Recherchez StackOverflow pour "Joda" pour trouver de nombreux exemples et de nombreuses discussions.
Un petit morceau de code source utilisant Joda-Time 2.4.
Format standard.
Format localisé.
la source
Retour à 2016, lorsque je souhaite personnaliser le format (pas en fonction de la configuration de l'appareil, comme vous le demandez ...) j'utilise généralement le fichier de ressource de chaîne:
dans strings.xml:
En activité:
Cela est également utile avec la sortie de la nouvelle bibliothèque de liaison de dates .
Je peux donc avoir quelque chose comme ça dans le fichier de mise en page:
Et en classe java:
la source
La classe de temps Android propose 3 méthodes de formatage http://developer.android.com/reference/android/text/format/Time.html
Voici comment je l'ai fait:
J'espère que c'est utile :-)
la source
C'est trop tard mais ça peut aider quelqu'un
voici le
format
format dont vous avez besoinex: "HH: mm" renvoie 15:30
la source