web-dev-qa-db-fra.com

Affichage de la date dans un format à deux chiffres

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));
19
The Tokenizer
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));
34
Azhar Shaikh

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
15
Code Behind
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));
9
V.J.
if (dayOfMonth < 10) {
    NumberFormat f = new DecimalFormat("00");
    Sting date = String.valueOf(f.format(dayOfMonth));
}
8
Ness Tyagi

tl; dr

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()

Évitez les anciens cours de date-heure

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.

Java.time

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.

Fonctions de formatage date-heure

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.

Fuseau horaire

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 );

ISO 8601

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();

À propos de Java.time

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? 

  • Java SE 8 , Java SE 9 et versions ultérieures
    • Intégré. 
    • Une partie de l'API Java standard avec une implémentation fournie.
    • Java 9 ajoute quelques fonctionnalités et corrections mineures.
  • Java SE 6 et Java SE 7
    • Une grande partie de la fonctionnalité Java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport .
  • Android
    • Les versions ultérieures d'Android regroupent des implémentations des classes Java.time.
    • Pour les versions antérieures d'Android, le projet ThreeTenABP s'adapte ThreeTen-Backport (mentionné ci-dessus). Voir Comment utiliser ThreeTenABP… .

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 _.

4
Basil Bourque
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.

2
drulabs

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);
2
ngesh

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

1
srsajid

Utilisation pure de la bibliothèque Java 8 Time:

String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
1
Zee

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.

0
Muhammad Baqir

Joda-Time

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.

0
Lucas Pires