Je veux juste que la date apparaisse comme ceci:
Saturday, May 26, 2012 at 10:42 PM
Voici mon code jusqu'à présent:
Calendar calendar = Calendar.getInstance();
String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR);
lastclick.setText(getString(R.string.lastclick) + " " + theDate);
Cela montre les chiffres du mois, du jour et de l'année, mais il doit y avoir une meilleure façon de le faire? N'y a-t-il pas un moyen simple de le faire, comme utiliser la fonction date()
de PHP?
Utilisez ce qui suit pour formater la date comme requis. Reportez-vous à cette LIEN
Calendar calendar = Calendar.getInstance();
lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar));
Où% 1 $ tA pour Staurday,% 1 $ tb pour mai,
etc...
Calendar calendar = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a");
System.out.println(format.format(calendar.getTime()));
L'exécution du code ci-dessus génère l'heure actuelle (par exemple, Saturday, May 26, 2012 at 11:03 PM
).
Voir la documentation Android pour SimpleDateFormat
pour plus d'informations.
La spécification de format de SimpleDateFormat
est similaire à celle de la fonction date
de PHP:
echo date("l, M j, Y \a\\t g:i A");
Tu as raison. Comparé au code Java, le code PHP est beaucoup plus succinct).
C'est en fait un problème assez subtil pour aller de l'avant, et je n'ai pas vu d'autre réponse ici sur SO qui traite à la fois:
Calendar
(ce qui signifie qu'il peut afficher une date différente de l'heure locale)Locale
de l'appareil (qui affecte la "bonne" façon de formater les dates)Les réponses précédentes à cette question ignorent les paramètres régionaux et les autres réponses qui impliquent une conversion en Date
ignorent le fuseau horaire. Voici donc une solution générale plus complète:
Calendar cal = Calendar.getInstance(); // the value to be formatted
Java.text.DateFormat formatter = Java.text.DateFormat.getDateInstance(
Java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT
formatter.setTimeZone(cal.getTimeZone());
String formatted = formatter.format(cal.getTime());
Notez que vous devez utiliser Java.text.DateFormat
ici, pas à Android (nom déroutant) Android.text.format.DateFormat
.