Date du calendrier au format aaaa-MM-jj en java


Comment convertir la date du calendrier au format yyyy-MM-dd.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);            
Date inActiveDate = null;
try {
    inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

Cela produira inActiveDate = Wed Sep 26 00:00:00 IST 2012. Mais ce dont j'ai besoin, c'est 2012-09-26. Mon but est de comparer cette date avec une autre date dans ma base de données en utilisant des critères d'hibernation. J'ai donc besoin de l'objet date au format yyyy-MM-dd.

Author: entpnerd, 2012-09-25

9 answers

Java Date est un conteneur pour le nombre de millisecondes depuis le 1er janvier 1970, 00:00:00 GMT.

Lorsque vous utilisez quelque chose comme System.out.println(date), Java utilise Date.toString() pour imprimer le contenu.

La seule façon de le changer est de remplacer Date et de fournir votre propre implémentation de Date.toString(). Maintenant, avant de lancer votreE et d'essayer cela, je ne le ferais pas; cela ne fera que compliquer les choses. Vous feriez mieux de formater la date au format que vous souhaitez utiliser (ou afficher).

Java 8+

LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"

String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12

Avant Java 8

Vous devriez utiliser le ThreeTen Backport

Ce qui suit est maintenu à des fins historiques (comme la réponse originale)

Ce que vous pouvez faire, c'est formater la date.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"

System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

Il s'agit en fait de la même date, représentée différemment.

 277
Author: MadProgrammer, 2018-05-11 07:22:24

Votre code est faux. Pas de point d'analyser la date et de garder cela en tant qu'objet Date.

Vous pouvez formater l'objet date de calendrier lorsque vous souhaitez l'afficher et le conserver sous forme de chaîne.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");          
String inActiveDate = null;
try {
    inActiveDate = format1.format(date);
    System.out.println(inActiveDate );
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}
 17
Author: Niroshan Abayakoon, 2012-09-25 04:08:56

Java.temps

La réponse de MadProgrammerest correcte, en particulier la pointe sur Joda-Time. Le successeur de Joda-Time est maintenant intégré dans Java 8 en tant que nouveau java.paquet de temps. Voici un exemple de code en Java 8.

Lorsque vous travaillez avec date-heure (par opposition à la date locale), le fuseau horaire dans critique. Le jour du mois dépend du fuseau horaire. Par exemple, le fuseau horaire de l'Inde est +05:30 (cinq et a la France a une demi-heure d'avance sur UTC), tandis que la France n'a qu'une heure d'avance. Ainsi, un moment dans un nouveau jour en Inde a une date alors que le même moment en France a la date "d'hier". La création d'une sortie de chaîne dépourvue de fuseau horaire ou d'informations de décalage crée une ambiguïté. Vous avez demandé une sortie AAAA-MM-JJ, j'ai donc fourni, mais je ne le recommande pas. Au lieu de ISO_LOCAL_DATE je l'aurais utilisé ISO_DATE pour obtenir ce résultat: 2014-02-25+05:30

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );

DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );

Vidage sur console {

System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );

Quand exécuter...

zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25

Joda-Temps

Code similaire utilisant la bibliothèque Joda-Time , le précurseur de java.temps.

DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );

ISO 8601

Soit dit en passant, ce format de votre chaîne d'entrée est un format standard, l'un des nombreux formats de chaîne date-heure pratiques définis par ISO 8601.

À la fois Joda-Temps et java.heure utilisez les formats ISO 8601 par défaut lors de l'analyse et de la génération de représentations de chaînes de diverses valeurs date-heure.

 11
Author: Basil Bourque, 2017-05-23 11:54:48

java.util.Date l'objet ne peut pas représenter dateau format personnalisé au lieu d'utiliser la méthode SimpleDateFormat.format qui renvoie string.

String myString=format1.format(date);
 6
Author: adatapost, 2012-09-25 04:02:21

Pour analyser un objet java.util.Date, vous devez d'abord le convertir en chaîne en utilisant votre propre format.

inActiveDate = format1.parse(  format1.format(date)  );

Mais je crois que vous êtes redondant ici.

 2
Author: ElderMael, 2012-09-25 04:02:51
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));

Cela affichera votre date + 7 jours au format mois, jour et année dans un volet de fenêtre JOption.

 2
Author: Drew, 2015-05-16 11:37:45
public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, date);
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy MM dd");
    String formatted = format1.format(cal.getTime());
    System.out.println(formatted);
}
 1
Author: Petr, 2017-09-26 09:06:51

J'ai trouvé ce code où la date est comparée dans un format à comparer avec le champ de date dans la base de données...peut-être que cela pourrait vous être utile...

Lorsque vous convertissez la chaîne en date à l'aide de simpledateformat, il est difficile de comparer avec le champ Date dans les bases de données mysql.

Convertissez donc la date de chaîne java au format en utilisant select STR_to_DATE('yourdate','%m/%d/%Y') - > dans ce format, vous obtiendrez le format de date exact de mysql date champ.

Http://javainfinite.com/java/java-convert-string-to-date-and-compare/

 0
Author: JavaLearner, 2015-08-20 09:51:55
public static String ThisWeekStartDate(WebDriver driver) {
        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        System.out.println("Before Start Date " + c.getTime());
        Date date = c.getTime();

          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");

          String CurrentDate = dfDate.format(date);
          System.out.println("Start Date " + CurrentDate);
          return CurrentDate;

    }
    public static String ThisWeekEndDate(WebDriver driver) {

        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
        System.out.println("Before End Date " + c.getTime());
        Date date = c.getTime();

          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");

          String CurrentDate = dfDate.format(date);
          System.out.println("End Date " + CurrentDate);
          return CurrentDate;
    }
 0
Author: Unnati Solanki, 2018-07-05 11:16:14