Come si converte la data corrente in una stringa in Java?
Come si converte la data corrente in una stringa in Java?
Risposte:
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());
}
Preso da qui
Calendar
più desiderabile di Date
?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Usa DateFormat
un'implementazione; es SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
2017/01/23
Meglio specificare esplicitamente il fuso orario desiderato / previsto.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
Il modo moderno a partire da Java 8 e versioni successive è con java.time framework .
Specificare il fuso orario, poiché la data varia in tutto il mondo in un dato momento.
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017/01/23
Per impostazione predefinita, ottieni una stringa nello standard ISO 8601 formato .
Per altri formati usa la java.time.format.DateTimeFormatter
classe.
Il framework java.time è integrato in Java 8 e versioni successive. Queste classi soppiantare la vecchia fastidiosi legacy classi data-time come java.util.Date
, Calendar
, eSimpleDateFormat
.
Il progetto Joda-Time , ora in modalità di manutenzione , consiglia la migrazione alle classi java.time .
Per saperne di più, vedere il tutorial Oracle . E cerca Stack Overflow per molti esempi e spiegazioni. La specifica è JSR 310 .
Puoi scambiare oggetti java.time direttamente con il tuo database. Utilizza un driver JDBC compatibile con JDBC 4.2 o successivo. Non c'è bisogno di stringhe, non c'è bisogno di java.sql.*
classi.
Dove ottenere le classi java.time?
Il progetto ThreeTen-Extra estende java.time con classi aggiuntive. Questo progetto è un banco di prova per possibili future aggiunte a java.time. Si possono trovare alcune classi utili, come per esempio Interval
, YearWeek
, YearQuarter
e altro .
Più veloce :
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
Per l'ora come AAAA-MM-gg
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
E la libreria di DateTime è:
import org.joda.time.DateTime;
DateTime
proviene? Una risposta su Stack Overflow dovrebbe avere qualche spiegazione in quanto questo sito è pensato per essere più di una libreria di frammenti.
La maggior parte delle risposte sono / erano valide. La nuova modifica dell'API JAVA per la gestione della data ha consentito di ridurre alcune precedenti ambiguità nella gestione della data in Java.
Riceverai un messaggio obsoleto per chiamate simili.
new Date() // deprecated
La chiamata precedente ha indotto lo sviluppatore a presumere che un nuovo oggetto Date fornirà all'oggetto Date il timestamp corrente. Questo comportamento non è coerente con altre classi API Java.
Il nuovo modo per farlo è usare l' istanza del calendario .
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
Anche qui la convenzione di denominazione non è perfetta ma è molto organizzata. Per una persona come me che ha difficoltà a rapinare le cose ma non dimenticherebbe mai qualcosa se suona / sembra logico, questo è un buon approccio.
Questo è più sinonimo di vita reale
Un altro modo per farlo è utilizzare Joda Time API
new DateTime().toString("yyyy-MM-dd")
o molto ovvio
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
entrambi restituiranno lo stesso risultato.
java.util.Date
, java.util.Calendar
e java.text.SimpleTextFormat
ora sono l'eredità , soppiantato dai java.time classi. Inoltre, il progetto Joda-Time è ora in modalità di manutenzione , con il team che consiglia la migrazione a java.time.
Clock
implementazione in Java 8 è esattamente la stessa delle classi legacy. Solo in Java 9 arriva una nuova implementazione, in grado di catturare il momento attuale con una risoluzione fino a nanosecondi.
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
formato alla tua funzione.