webentwicklung-frage-antwort-db.com.de

java-Datumsobjekt mit einer Wertzeichenfolge erstellen

Ich verwende das, um die aktuelle Uhrzeit zu erhalten:

Java.util.Calendar cal = Java.util.Calendar.getInstance();
    System.out.println(new Java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
            .format(cal.getTime()));

Ich möchte den Wert (den ich drucke) in ein Datumsobjekt einfügen. Ich habe folgendes versucht:

Date currentDate = new Date(value);

aber Eclipse sagt mir, dass diese Funktion nicht gut ist.

Edit Die value ist der Wert, den ich mit system.out.println an Sie gedruckt habe

23
Marco Dinatsoli

Wenn Sie einen String in ein Date-Objekt konvertieren möchten, verwenden Sie SimpleDateFormat#parse.
Versuchen zu benutzen 

String dateInString = new Java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss")
        .format(cal.getTime())
SimpleDateFormat formatter = new SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss");
Date parsedDate = formatter.parse(dateInString);

Wenn Sie eine Date in eine String konvertieren wollen, sollten Sie die SimpleDateFormat#format-Funktion verwenden.
Jetzt ist der Punkt für Sie new Date(String) ist veraltet und wird jetzt nicht empfohlen. Wenn nun jemand analysieren möchte, sollte er/sie SimpleDateFormat#parse verwenden.

in official doc finden Sie weitere Datums- und Zeitmuster, die in den SimpleDateFormat-Optionen verwendet werden.

54
Freak

Verwenden Sie die SimpleDateFormat-Analysemethode:

import Java.text.DateFormat;
import Java.text.SimpleDateFormat;

String inputString = "11-11-2012";
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date inputDate = dateFormat.parse(inputString, dateFormat );

Da wir Java 8 mit LocalDate haben, würde ich als nächstes vorschlagen:

import Java.time.LocalDate;
import Java.time.format.DateTimeFormatter;

String inputString = "11-11-2012";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate inputDate = LocalDate.parse(inputString);
30
alexey28

ERSTES ALLES KENNEN DIE GRÜNDE, warum Eclipse IS so tut.

Date hat nur einen Konstruktor Date (langes Datum), der nach Datum im langen Datentyp fragt.

Der Konstruktor, den Sie verwenden

Date (String s) Veraltet. Ab JDK Version 1.1 durch DateFormat.parse (String s) ersetzt.

Deshalb sagt Eclipse, dass diese Funktion nicht gut ist.

Siehe diese offiziellen Dokumente 

http://docs.Oracle.com/javase/6/docs/api/Java/util/Date.html


Veraltete Methoden aus Ihrem Kontext - Quelle - http://www.coderanch.com/t/378728/Java/java/Deprecated-methods 

Es gibt eine Reihe von Gründen, warum eine Methode oder Klasse veraltet werden kann. Eine API ist möglicherweise nicht einfach erweiterbar, ohne die Rückwärtskompatibilität zu beeinträchtigen, und kann daher durch eine leistungsfähigere API ersetzt werden (z. B. Java.util.Date wurde zugunsten von Calendar oder des Java 1.0-Ereignismodells verworfen). Es funktioniert möglicherweise auch einfach nicht oder erzeugt unter bestimmten Umständen falsche Ergebnisse (z. B. funktionieren einige Java.io-Stream-Klassen mit einigen Codierungen nicht richtig). Manchmal ist eine API nur schlecht konzipiert (SingleThreadModel in der Servlet-API) und wird durch nichts ersetzt. Und einige der frühen Aufrufe wurden durch "Java Bean" -kompatible Methoden ersetzt (Größe durch getSize, Begrenzungen durch getBounds usw.).


SEVRAL-LÖSUNGEN SIND DA GERADE GOOGLE IT--

Sie können Datum (langes Datum) verwenden, indem Sie Ihre Datumszeichenfolge in lange Millisekunden konvertieren und Stackoverflow hat so viele Post für diesen Zweck.

Konvertierung eines Datumsstrings in Millisekunden in Java

4
Nikhil Agrawal
 import Java.util.Date;
 import Java.text.SimpleDateFormat;

Oben ist die Importmethode, unten der einfache Code für Date

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();

 system.out.println((dateFormat.format(date))); 
3
akki0996

Versuche dies :-

try{
        String valuee="25/04/2013";
        Date currentDate =new SimpleDateFormat("dd/MM/yyyy").parse(valuee);
        System.out.println("Date is ::"+currentDate);
        }catch(Exception e){
            System.out.println("Error::"+e);
            e.printStackTrace();
        }

Ausgabe:-

   Date is ::Thu Apr 25 00:00:00 GMT+05:30 2013

Ihr Wert sollte das richtige Format haben.

In Ihrer Frage haben Sie auch danach gefragt: -

   Date currentDate = new Date(value);

Diese Art des Datumskonstruktors ist bereits veraltet. Daher wird er nicht mehr verwendet. Wir wissen, dass Date 6 Konstruktoren hat. Weitere Informationen

1
JDGuide

Hier ist die optimierte Lösung, um dies mit der SimpleDateFormatparse()-Methode zu tun.

SimpleDateFormat formatter = new SimpleDateFormat(
        "EEEE, dd/MM/yyyy/hh:mm:ss");
String strDate = formatter.format(new Date());

try {
    Date pDate = formatter.parse(strDate);
} catch (ParseException e) { // note: parse method can throw ParseException
    e.printStackTrace();
}

Nur wenige Dinge zu beachten

  • Wir müssen keine Kalenderinstanz erstellen, um das aktuelle Datum abzurufen. & Uhrzeit stattdessen new Date() verwenden.
  • Auch benötigt keine 2 Instanzen von SimpleDateFormat als Wurde in der meist gewählten Antwort auf diese Frage gefunden. Es ist nur eine Verschwendung von Gedächtnis
  • Das Fangen einer generischen Ausnahme wie Exception ist eine schlechte Praxis, wenn wir wissen, dass die parse-Methode nur eine Chance hat, eine ParseException zu werfen. Wir müssen so genau wie möglich sein, wenn es um Ausnahmen geht. Du kannst verweisen, wirft Ausnahme schlechte Praxis?
1
Hamzeen Hameem

Der Wert kommt von String ( Java Date-Objektkonstruktor zum Abrufen von String ist veraltet ).

und Date(String) ist veraltet.

Werfen Sie einen Blick auf jodatime , oder setzen Sie @SuppressWarnings ({"deprecation"}) außerhalb der Methode, die den Konstruktor Date(String) aufruft.

0
Suresh Atta

Was Sie grundsätzlich versuchen zu tun, ist dies:

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();

Der Grund dafür ist, dass die String, die Sie drucken, nur eine String-Darstellung der Date in Ihrem erforderlichen Format ist. Wenn Sie versuchen, es in ein Datum zu konvertieren, werden Sie letztendlich das tun, was ich oben erwähnt habe.

Die Date ( cal.getTime () ) in eine String zu formatieren und zu versuchen, eine Date von ihr zurückzuholen, macht keinen Sinn. Date hat kein eigenes Format. Sie können nur eine String-Darstellung davon erhalten, wenn Sie die SDF verwenden.

0
SudoRahul