it-swarm.com.de

Kalenderdatum im Format JJJJ-MM-TT in java

So konvertieren Sie das Kalenderdatum in das yyyy-MM-dd -Format.

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

Dies wird inActiveDate = Wed Sep 26 00:00:00 IST 2012 erzeugen. Aber was ich brauche, ist 2012-09-26. Mein Zweck ist es, dieses Datum mit einem anderen Datum in meiner Datenbank unter Verwendung von Ruhezustand-Kriterien zu vergleichen. Also brauche ich das Datumsobjekt im yyyy-MM-dd Format.

190
1355

Ein Java Date ist ein Container für die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 GMT.

Wenn Sie etwas wie System.out.println(date) verwenden, verwendet Java Date.toString(), um den Inhalt zu drucken.

Die einzige Möglichkeit, dies zu ändern, besteht darin, Date zu überschreiben und eine eigene Implementierung von Date.toString() bereitzustellen. Bevor Sie jetzt Ihr IDE starten und dies versuchen, würde ich es nicht tun. es wird die Sache nur komplizieren. Sie sollten das Datum besser auf das Format formatieren, das Sie verwenden (oder anzeigen) möchten.

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

Vor Java 8

Sie sollten das ThreeTen Backport verwenden

Folgendes wird für historische Zwecke aufbewahrt (als die ursprüngliche Antwort)

Sie können das Datum formatieren.

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"

Dies sind eigentlich die gleichen Daten, unterschiedlich dargestellt.

324
MadProgrammer

Ihr Code ist falsch. Kein Punkt zum Parsen des Datums und behalte das als Datumsobjekt.

Sie können das Kalenderdatum-Objekt formatieren, wenn Sie es als Zeichenfolge anzeigen und beibehalten möchten.

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

Java.time

Das Antwort von MadProgrammer ist richtig, insbesondere der Tipp zu Joda-Time . Der Nachfolger von Joda-Time ist jetzt in Java 8 als neues Java.time-Paket integriert. Hier ist Beispielcode in Java 8.

Bei der Arbeit mit Datum und Uhrzeit (im Gegensatz zum lokalen Datum) ist die Zeitzone von entscheidender Bedeutung. Der Tag des Monats hängt von der Zeitzone ab. Zum Beispiel ist die Zeitzone Indien _+05:30_ (fünfeinhalb Stunden vor UTC), während Frankreich nur eine Stunde vor UTC liegt. Ein Moment an einem neuen Tag in Indien hat also ein Datum, während der gleiche Moment in Frankreich das Datum von gestern hat. Das Erstellen einer Zeichenfolgenausgabe ohne Zeitzonen- oder Versatzinformationen führt zu Mehrdeutigkeiten. Sie haben nach der JJJJ-MM-TT-Ausgabe gefragt, die ich bereitgestellt habe, aber ich empfehle sie nicht. Anstelle von ISO_LOCAL_DATE hätte ich ISO_DATE verwendet, um diese Ausgabe zu erhalten: _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 );
_

Dump to console ...

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

Beim Laufen ...

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

Joda-Zeit

Ein ähnlicher Code wird mit der Bibliothek Joda-Time , dem Vorläufer von Java.time, verwendet.

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

ISO 8601

Übrigens ist das Format Ihrer Eingabezeichenfolge ein Standardformat, eines von mehreren praktischen Datums-/Uhrzeitformaten, die durch ISO 8601 definiert sind.

Sowohl Joda-Time als auch Java.time verwenden standardmäßig ISO 8601-Formate, wenn Zeichenfolgendarstellungen verschiedener Datums-/Uhrzeitwerte analysiert und generiert werden.

13
Basil Bourque

Java.util.Date -Objekt kann Datum nicht im benutzerdefinierten Format darstellen. Stattdessen müssen Sie die SimpleDateFormat.format -Methode verwenden, die string zurückgibt.

String myString=format1.format(date);
6
adatapost

Um ein Java.util.Date -Objekt zu analysieren, müssen Sie es zunächst in ein eigenes Format in String konvertieren.

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

Aber ich glaube, Sie sind hier überflüssig.

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

Dadurch wird Ihr Datum + 7 Tage im Format Monat, Tag und Jahr in einem Fensterbereich von JOption angezeigt.

2
Drew
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);
}
2
Petr

Ich habe diesen Code gefunden, in dem das Datum in einem Format verglichen wird, das mit dem Datumsfeld in der Datenbank verglichen werden soll. Dies könnte für Sie hilfreich sein.

Wenn Sie die Zeichenfolge mit simpledateformat in Datum konvertieren, ist es schwierig, sie mit dem Datumsfeld in MySQL-Datenbanken zu vergleichen.

Konvertieren Sie also das Java -Zeichenfolgedatum in das Format, indem Sie STR_to_DATE ('yourdate', '% m /% d /% Y') -> in dieses Format auswählen. Dann erhalten Sie das genaue Datumsformat von MySQL-Datumsfeld.

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

0
JavaLearner
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
Unnati Solanki