Wie konvertiere ich das aktuelle Datum in Java in einen String?
Wie konvertiere ich das aktuelle Datum in Java in einen String?
Antworten:
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
// GET DATE & TIME IN ANY FORMAT
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}
Von hier genommen
Calendar
wünschenswerter als Date
?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Verwenden Sie eine DateFormat
Implementierung. zB SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
2017-01-23
Es ist besser, die gewünschte / erwartete Zeitzone explizit anzugeben.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
Die moderne Methode ab Java 8 und höher ist das Java.time- Framework.
Geben Sie die Zeitzone an, da das Datum zu einem bestimmten Zeitpunkt weltweit variiert.
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017-01-23
Standardmäßig erhalten Sie einen String im Standardformat ISO 8601 .
Verwenden Sie für andere Formate die java.time.format.DateTimeFormatter
Klasse.
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist 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 Zeichenfolgen, keine Notwendigkeit für java.sql.*
Klassen.
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval
, YearWeek
, YearQuarter
, und mehr .
Schneller :
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
Für die Zeit als JJJJ-MM-TT
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
Und die Library of DateTime ist:
import org.joda.time.DateTime;
DateTime
? Eine Antwort zum Stapelüberlauf sollte eine Erklärung enthalten, da diese Site mehr als eine Snippet-Bibliothek sein soll.
Die meisten Antworten sind / waren gültig. Durch die neue JAVA-API-Änderung für die Datumsbehandlung wurde sichergestellt, dass frühere Unklarheiten bei der Behandlung von Java-Datumsangaben verringert werden.
Sie erhalten eine veraltete Nachricht für ähnliche Anrufe.
new Date() // deprecated
Bei dem obigen Aufruf musste der Entwickler davon ausgehen, dass ein neues Date-Objekt das Date-Objekt mit dem aktuellen Zeitstempel liefert. Dieses Verhalten ist in anderen Java-API-Klassen nicht konsistent.
Die neue Methode hierfür ist die Verwendung der Kalenderinstanz .
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
Auch hier ist die Namenskonvention nicht perfekt, aber sie ist sehr gut organisiert. Für eine Person wie mich, die es schwer hat, Dinge zu überfallen, aber niemals etwas vergessen würde, wenn es logisch klingt / erscheint, ist dies ein guter Ansatz.
Dies ist mehr gleichbedeutend mit dem wirklichen Leben
Eine weitere Möglichkeit, dies zu tun, ist die Verwendung der Joda-Zeit-API
new DateTime().toString("yyyy-MM-dd")
oder das viel Offensichtliche
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
beide geben das gleiche Ergebnis zurück.
java.util.Date
, java.util.Calendar
und java.text.SimpleTextFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen. Außerdem befindet sich das Joda-Time- Projekt jetzt im Wartungsmodus , wobei das Team die Migration zu java.time empfiehlt.
Clock
Implementierung in Java 8 entspricht genau den Legacy-Klassen. Nur in Java 9 kommt eine neue Implementierung, die den aktuellen Moment mit einer Auflösung von nur Nanosekunden erfassen kann.
public static Date getDateByString(String dateTime) {
if(dateTime==null || dateTime.isEmpty()) {
return null;
}
else{
String modified = dateTime + ".000+0000";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date dateObj = new Date();
Date dateObj1 = new Date();
try {
if (dateTime != null) {
dateObj = formatter.parse(modified);
}
} catch (ParseException e) {
e.printStackTrace();
}
return dateObj;
}
}
String
Format an Ihre Funktion übergeben.