web-dev-qa-db-de.com

Datum wird zweistellig angezeigt

Ich habe Probleme, das Datum in einem zweistelligen Format anzuzeigen. Ich möchte, dass es so ist, dass wenn der Tag oder der Monat ein einstelliges Beispiel ist: 4 Es würde 04 anzeigen. Ich habe Probleme mit der Logik dafür, wenn mir jemand helfen kann, wäre ich wirklich dankbar. 

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

in Ihrem Fall:

 mFormat.setRoundingMode(RoundingMode.DOWN);
 String Dates =  mFormat.format(Double.valueOf(year)) + "-" +  mFormat.format(Double.valueOf(Place)) + "-" +  mFormat.format(Double.valueOf(day));
34
Azhar Shaikh

Bitte verwenden Sie SimpleDateFormat

SimpleDateFormat sd1 = new SimpleDateFormat("dd-MMM-yyyy");
System.out.println("Date : " + sd1.format(new Date(c.getTimeInMillis()));

Ausgabe

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

07.01.2016

Es ist besser, immer Ihre gewünschte/erwartete Zeitzone explizit anzugeben.

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .toString()

Vermeiden Sie alte Datums- und Zeitklassen

Die von Ihnen verwendete Java.util.Calendar-Klasse ist jetzt veraltet. Vermeiden Sie diese Klasse zusammen mit Java.util.Date und so weiter. Diese haben sich als schlecht gestaltet, verwirrend und lästig erwiesen.

Java.time

Die alten Datum/Uhrzeit-Klassen wurden durch das in Java 8 und höher integrierte Java.time Framework ersetzt. Ein Großteil der Funktionen wurde im Projekt ThreeTen-Backport auf Java 6 & 7 zurückportiert und an Android angepasst. in ThreeTenABP .

Mit diesen modernen Klassen können Sie Ihr Ziel in einer einzigen Codezeile erreichen (siehe unten).

Datum-Uhrzeit-Formatierungsfunktionen

Sowohl die alten veralteten Datums- und Uhrzeitklassen als auch die Java.time-Klassen bieten Formatierungsfunktionen. Sie müssen keinen eigenen Formatierungscode schreiben.

Zeitzone

Die Zeitzone ist für die Bestimmung des Datums von entscheidender Bedeutung. Das Datum variiert weltweit je nach Zeitzone, wenn im Osten ein neuer Tag beginnt. Dieses Problem wurde in der Frage und anderen Antworten ignoriert. Ohne Angabe wird implizit die aktuelle Standardzeitzone der JVM angewendet. Es ist besser, Ihre gewünschte/erwartete Zeitzone explizit anzugeben.

LocalDate

Verwenden Sie für einen Datumswert ohne Uhrzeit und ohne Zeitzone LocalDate . Während in LocalDate keine Zeitzone gespeichert ist, bestimmt eine Zeitzone „Heute“.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );

ISO 8601

Ihr gewünschtes Format von JJJJ-MM-TT mit zweistelligen Zahlen entspricht dem Standard ISO 8601 , der sinnvolle Formate für die Textdarstellung von Datums- und Uhrzeitwerten definiert. Dieser Standard wird standardmäßig in Java.time-Klassen zum Parsen/Generieren von Zeichenfolgen verwendet.

String output = today.toString();

Das sind alles 3 Codezeilen. Sie könnten sie sogar kombinieren.

String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ).toString();

About Java.time

Das Java.time Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Datum-Zeit-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Joda-Time -Projekt, das sich jetzt im - Wartungsmodus befindet, rät zur Migration auf Java.time Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . Durchsuchen Sie Stack Overflow nach vielen Beispielen und Erklärungen. Die Spezifikation lautet JSR 310 .

Sie können Java.time Objekte direkt mit Ihrer Datenbank austauschen. Verwenden Sie einen JDBC-Treiber , der mit JDBC 4.2 oder höher kompatibel ist. Keine Notwendigkeit für Zeichenketten, keine Notwendigkeit für Klassen Java.sql.*.

Woher bekommen Sie die Java.time-Klassen?

Das Projekt ThreeTen-Extra erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von Java.time. Hier finden Sie möglicherweise einige nützliche Klassen wie Interval , YearWeek , YearQuarter und more .

4
Basil Bourque
if ((month+1)<10){
    place = "0"+(String) (month+1)
}

machen Sie dasselbe für den Tag und Sie sind gut zu gehen.

+1 im Monat, weil es mit 0 beginnt.

2
drulabs

Verwenden Sie SimpleDateFormat class .. Es gibt viele Möglichkeiten, dies zu tun.

etwas wie das..

 SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yy"); // you can add any format..


      Date date = sdfSource.parse(strDate);
2
ngesh

Sie können die SimpleDateFormat-Klasse verwenden

String dates = new Java.text.SimpleDateFormat("dd-MM-YYYY").format(new Date())

weitere Informationen https://docs.Oracle.com/javase/6/docs/api/Java/text/SimpleDateFormat.html

1
srsajid

Reines Verwenden der Java 8 Time-Bibliothek:

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

sie können die Methode String.format () verwenden.

beispiel:

String.format("%02d", month);

sie fügen also vor dem Monat "0" hinzu, wenn der gewählte Monat weniger als 10 ist.

0
Muhammad Baqir

Joda-Zeit

Verwendung der Joda-Time -Bibliothek, insbesondere der org.joda.time.DateTime -Klasse.

DateTime datetime = new DateTime(new Date());
String month = datetime.toString("MM");

das Ergebnis wird 2-stellig sein

Wenn Sie beispielsweise ein Jahr benötigen, können Sie Folgendes verwenden:

String year = datetime.toString("YYYY");

das Ergebnis wird 4 Ziffern des Jahres sein.

0
Lucas Pires