Je ne parviens pas à afficher la date dans un format à deux chiffres. Je veux qu'il en soit ainsi, par exemple, lorsque le jour ou le mois est composé d'un seul chiffre: 4 L'afficheur indique 04. Je ne parviens pas à trouver la logique. Si quelqu'un peut m'aider, je vous en serais très reconnaissant.
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
if (month % 10 == 0) {
Place = 0 + month;
}
String Dates = year + "-" + Place + "-" + day;
Date.setText((Dates));
DecimalFormat mFormat= new DecimalFormat("00");
mFormat.format(Double.valueOf(year));
dans ton cas:
mFormat.setRoundingMode(RoundingMode.DOWN);
String Dates = mFormat.format(Double.valueOf(year)) + "-" + mFormat.format(Double.valueOf(Place)) + "-" + mFormat.format(Double.valueOf(day));
Veuillez utiliser SimpleDateFormat
SimpleDateFormat sd1 = new SimpleDateFormat("dd-MMM-yyyy");
System.out.println("Date : " + sd1.format(new Date(c.getTimeInMillis()));
Sortie
Date : 18-Apr-2012
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH)+1;
String Dates = year + "-" +(month<10?("0"+month):(month)) + "-" + day;
Date.setText((Dates));
if (dayOfMonth < 10) {
NumberFormat f = new DecimalFormat("00");
Sting date = String.valueOf(f.format(dayOfMonth));
}
LocalDate.now()
.toString()
2016-01-07
Il est préférable de toujours spécifier explicitement votre fuseau horaire souhaité/attendu.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
La classe Java.util.Calendar que vous utilisez est maintenant héritée. Évitez cette classe, avec Java.util.Date et autres. Ceux-ci se sont avérés mal conçus, déroutants et gênants.
Les anciennes classes date-heure ont été remplacées par le framework Java.time intégré à Java 8 et versions ultérieures. Une grande partie des fonctionnalités ont été rétroportées vers Java 6 et 7 dans le projet ThreeTen-Backport , puis adaptées à Android dans ThreeTenABP .
Ces classes modernes peuvent atteindre votre objectif en une seule ligne de code, comme indiqué ci-dessous.
Les anciennes classes date-heure obsolètes ainsi que les classes Java.time offrent des fonctionnalités de formatage. Pas besoin que vous écriviez votre propre code de formatage.
Le fuseau horaire est crucial pour déterminer la date. La date varie dans le monde selon le fuseau horaire, à l'aube d'un nouveau jour. Ce problème a été ignoré dans la question et les autres réponses. S'il est omis, le fuseau horaire actuel par défaut de la machine virtuelle Java est appliqué implicitement. Mieux vaut spécifier explicitement votre fuseau horaire souhaité/attendu.
LocalDate
Pour une valeur de date uniquement sans heure et sans fuseau horaire, utilisez la valeur LocalDate
. Bien qu'aucun fuseau horaire ne soit stocké dans la LocalDate
, un fuseau horaire détermine «aujourd'hui».
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
Le format souhaité de AAAA-MM-JJ avec des chiffres à deux chiffres est conforme à la norme ISO 8601 définissant les formats sensibles pour les représentations textuelles des valeurs date-heure. Cette norme est utilisée par défaut dans les classes Java.time pour analyser/générer des chaînes.
String output = today.toString();
C’est tout, 3 lignes de code. Vous pouvez même les combiner.
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();
Le cadre Java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciennes classes problématiques héritées _ date-heure telles que Java.util.Date
, Calendar
_, & SimpleDateFormat
.
Le projet Joda-Time , désormais en mode { mode maintenance }, conseille la migration vers les classes Java.time .
Pour en savoir plus, consultez le Oracle Tutorial . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets Java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou une version ultérieure. Pas besoin de chaînes, pas besoin de Java.sql.*
classes.
Où obtenir les classes Java.time?
Le projet ThreeTen-Extra étend Java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts à Java.time. Vous pouvez y trouver des classes utiles telles que Interval
_, YearWeek
, YearQuarter
_ et plus _.
if ((month+1)<10){
place = "0"+(String) (month+1)
}
faites la même chose pour la journée et vous êtes prêt à partir.
+1 en mois car il commence par 0.
Utilisez SimpleDateFormat class .. Il y a beaucoup de façons de le faire ..
quelque chose comme ça..
SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yy"); // you can add any format..
Date date = sdfSource.parse(strDate);
Vous pouvez utiliser la classe SimpleDateFormat
String dates = new Java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())
pour plus d'informations https://docs.Oracle.com/javase/6/docs/api/Java/text/SimpleDateFormat.html
Utilisation pure de la bibliothèque Java 8 Time:
String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
vous pouvez utiliser la méthode String.format ().
exemple :
String.format("%02d", month);
ils ajoutent donc "0" avant le mois si le mois choisi est inférieur à 10.
Utiliser la bibliothèque Joda-Time , en particulier le org.joda.time.DateTime
class.
DateTime datetime = new DateTime(new Date());
String month = datetime.toString("MM");
le résultat sera 2 chiffres
Si vous avez besoin par exemple d’une année, vous pouvez utiliser:
String year = datetime.toString("YYYY");
le résultat sera 4 chiffres de l'année.