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
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.
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);
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.
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)));
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
Hier ist die optimierte Lösung, um dies mit der SimpleDateFormat
parse()
-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
new Date()
verwenden.SimpleDateFormat
als Wurde in der meist gewählten Antwort auf diese Frage gefunden. Es ist nur eine Verschwendung von GedächtnisException
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?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.
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.