webentwicklung-frage-antwort-db.com.de

Wie konvertiere ich ein Datum in das Format JJJJ-MM-TT?

Sa Dez 01 00:00:00 GMT 2012

Ich muss das oben angegebene Datum in das unten angegebene Format konvertieren

2012-12-01

Wie kann ich?

ich habe versucht, mit der folgenden Methode, aber es funktioniert nicht

public Date ConvertDate(Date date){

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String s = df.format(date);
    String result = s;
    try {
        date=df.parse(result);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return date;
  }
28
User 1531343

Benutze das.

Java.util.Date date = new Date("Sat Dec 01 00:00:00 GMT 2012");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String format = formatter.format(date);
System.out.println(format);

sie erhalten die Ausgabe als

2012-12-01
64

[~ # ~] update [~ # ~] Meine Antwort hier ist jetzt veraltet. Das Joda-Time-Projekt befindet sich jetzt im Wartungsmodus und rät zur Migration in die Java.time Klassen. Siehe die moderne Lösung im Answer by Ole V.V. .

Joda-Zeit

Die akzeptierte Antwort von NidhishKrishnan ist korrekt.

Zum Spaß ist hier die gleiche Art von Code in Joda-Time 2.3.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

Java.util.Date date = new Date(); // A Date object coming from other code.

// Pass the Java.util.Date object to constructor of Joda-Time DateTime object.
DateTimeZone kolkataTimeZone = DateTimeZone.forID( "Asia/Kolkata" );
DateTime dateTimeInKolkata = new DateTime( date, kolkataTimeZone );

DateTimeFormatter formatter = DateTimeFormat.forPattern( "yyyy-MM-dd");
System.out.println( "dateTimeInKolkata formatted for date: " + formatter.print( dateTimeInKolkata ) );
System.out.println( "dateTimeInKolkata formatted for ISO 8601: " + dateTimeInKolkata );

Beim Laufen ...

dateTimeInKolkata formatted for date: 2013-12-17
dateTimeInKolkata formatted for ISO 8601: 2013-12-17T14:56:46.658+05:30
4
Basil Bourque
String s;
Format formatter;
Date date = new Date();

// 2012-12-01
formatter = new SimpleDateFormat("yyyy-MM-dd");
s = formatter.format(date);
System.out.println(s);
3
Vinayak

Sie können Date nicht selbst formatieren. Sie können das formatierte Ergebnis nur in String erhalten. Verwenden Sie SimpleDateFormat wie von anderen erwähnt.

Darüber hinaus sind die meisten getter methods in Date sind deprecated.

2
Mawia

Moderne Antwort: Verwenden Sie LocalDate aus Java.time, Die moderne Java Datums- und Zeit-API und deren toString Methode:

    LocalDate date = LocalDate.of(2012, Month.DECEMBER, 1); // get from somewhere
    String formattedDate = date.toString();
    System.out.println(formattedDate);

Dies wird gedruckt

2012-12-01

Ein Datum (unabhängig davon, ob es sich um Java.util.Date Oder Java.time.LocalDate Handelt) enthält kein Format. Alles, was es hat, ist eine toString -Methode, die ein bestimmtes Format erzeugt, und Sie können die toString -Methode nicht ändern. Glücklicherweise erzeugt LocalDate.toString Genau das Format, nach dem Sie gefragt haben.

Die Klasse Date ist längst veraltet, und die Klasse SimpleDateFormat, die Sie verwendet haben, ist bekanntermaßen problematisch. Ich empfehle Ihnen, diese Klassen zu vergessen und stattdessen Java.time Zu verwenden. Mit der modernen API lässt sich viel besser arbeiten.

Ausnahme: Es kommt vor, dass Sie von einer Legacy-API ein Date erhalten, das Sie gerade nicht ändern können oder möchten. Das Beste, was Sie damit machen können, ist, es in Java.time.Instant Umzuwandeln und von dort aus weitere Operationen durchzuführen:

    Date oldfashoinedDate = // get from somewhere
    LocalDate date = oldfashoinedDate.toInstant()
            .atZone(ZoneId.of("Asia/Beirut"))
            .toLocalDate();

Bitte geben Sie Ihre gewünschte Zeitzone ein, wenn dies nicht zufällig Asien/Beirut war. Dann wie oben vorgehen.

Link: Oracle-Tutorial: Datum und Uhrzeit , in dem erklärt wird, wie Java.time Verwendet wird.

1
Ole V.V.