2010-05-31 5 views

risposta

24
// On the form: dow mon dd hh:mm:ss zzz yyyy 
new Date().toString(); 
+2

Questo mostrerà la data e l'ora, non solo la data corrente. – Adamski

+44

Ci scusiamo per il superamento. – jasonmp85

+1

Il formato utilizzato da quel metodo è terribile. Inoltre, il fuso orario predefinito di KVM viene applicato implicitamente, quindi i risultati varieranno. E queste classi fastidiose sono ormai obsolete, soppiantate dalle classi java.time. Vedi [Oracle Tutorial] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

11

Utilizzare un'implementazione DateFormat; per esempio. SimpleDateFormat.

DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
String data = df.format(new Date()); 
+0

FYI, queste classi fastidiose sono ormai legacy, soppiantate dalle classi java.time. Vedi [Oracle Tutorial] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –

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

Tratto da here

+0

Risposta ottimale per l'utilizzo del calendario anziché della data. – Random

+4

Sono confuso. In quale universo il calendario è più desiderabile di "Date"? – jasonmp85

+4

In realtà sta ancora usando 'Date' perché' Calendar # getTime() 'restituisce una' Date' ... – brimborium

168
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
+11

Vorrei poter dare più di 1 voto. – TimeTrap

+0

Utilizzato una combinazione di questo e la risposta sotto per il timestring. C: –

+0

@Ian Purton La data della stringa è in UTC tz ..? –

8

veloce:

String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis()); 
+1

Richiede org.apache.commons –

1

tl; dr

LocalDate.now() 
     .toString() 

2017-01-23

Meglio specificare il fuso orario desiderato/previsto in modo esplicito.

LocalDate.now(ZoneId.of("America/Montreal")) 
     .toString() 

java.time

Il modo moderno come di Java 8 e versioni successive è con il quadro java.time.

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 si ottiene una stringa in formato standard ISO 8601.

Per altri formati, utilizzare la classe java.time.format.DateTimeFormatter.

Chi java.time

Il quadro java.time è integrato in Java 8 e versioni successive. Queste classi soppiantano le fastidiose vecchie lezioni di data-ora come java.util.Date, .Calendar, & java.text.SimpleDateFormat.

Il progetto Joda-Time, ora in maintenance mode, consiglia la migrazione a java.time.

Per ulteriori informazioni, vedere Oracle Tutorial. E cerca Stack Overflow per molti esempi e spiegazioni.

Molte delle funzionalità java.time è back-porting di Java 6 & 7 in ThreeTen-Backport e in seguito atto a Android in ThreeTenABP (vedi How to use…).

Il progetto ThreeTen-Extra estende java.time con classi aggiuntive. Questo progetto è un terreno di prova per possibili aggiunte future a java.time. È possibile trovare alcune classi utili come Interval, YearWeek, YearQuarter e altro.

0

La maggior parte delle risposte sono/erano valide. La nuova modifica dell'API JAVA per la gestione della data ha fatto sì che alcune precedenti ambiguità nella gestione delle date di Java venissero ridotte.

Si riceverà un messaggio obsoleto per chiamate simili.

new Date() // deprecated 

La chiamata precedente prevedeva che lo sviluppatore presupponesse che un nuovo oggetto Date assegnasse all'oggetto Date il timestamp corrente. Questo comportamento non è coerente tra le altre classi dell'API Java.

Il nuovo modo per farlo è utilizzare l'istanza 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 mettere in ordine le cose ma non dimenticherebbe mai qualcosa se sembra/sembra logico, questo è un buon approccio.

questo è più sinonimo di vita reale

  1. Otteniamo un oggetto Calendar e non vediamo per il tempo in esso. (ti starai chiedendo se nessun corpo riceve tempo da un calendario, ecco perché ho detto che non è perfetto.Ma è un argomento diverso del tutto)
  2. Quindi vogliamo la data in un semplice formato di testo, quindi usiamo un Classe di utilità SimpleDateFormat che ci aiuta a formattare la data dal passaggio 1. Ho usato yyyy, MM, dd come parametri nel formato. Supported date format parameters

più Un modo per farlo è usare Joda tempo API

new DateTime().toString("yyyy-MM-dd") 

o molto evidente

new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd") 

sia restituirà lo stesso risultato.

+0

FYI, le fastidiose vecchie classi data-ora come ['java.util.Date'] (https://docs.oracle.com/javase/8/docs/api/java/util /Date.html), 'java.util.Calendar' e' java.text.SimpleTextFormat' sono ora [legacy] (https://en.wikipedia.org/wiki/Legacy_system), soppiantati dal [java.time ] (https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html) classi. Inoltre, il progetto [Joda-Time] (http://www.joda.org/joda-time/) è ora in [modalità manutenzione] (https://en.wikipedia.org/wiki/Maintenance_mode), con il team che consiglia la migrazione a java.time. –

+0

@BasilBourque Questo è quello che intendevo nella mia risposta, che la risposta votata in alto è giusta ma non rilevante per uno sviluppatore di oggi. Infine java avrà una classe Clock e Clock.getTime() sarebbe molto più sensato e imitatore della vita reale delle classi Date o DateTime o Time. Gli sviluppatori Java devono sapere che OOPS è iniziato come qualcosa che imita gli scenari della vita reale. –

+0

FYI, l'implementazione di 'Clock' in Java 8 è esattamente la stessa delle classi precedenti. Solo in Java 9 arriva una nuova implementazione, in grado di catturare il momento attuale con una risoluzione fino a nanosecondi. –

-3
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; 
     } 

    } 
+0

Siamo in grado di passare qualsiasi formato, che mai usi –

+1

Alcune spiegazioni su questo pezzo di codice sarebbero probabilmente utili. – Pyves

+1

La risposta non è pertinente alla domanda. E No, non puoi passare la data in alcun formato 'String' alla tua funzione. –

1

per tempo come AAAA-MM-dd

String time = new DateTime(yourData).toString("yyyy-MM-dd"); 

e la biblioteca di DateTime è:

import org.joda.time.DateTime;

+0

E da quale libreria è 'DateTime'? Una risposta su Stack Overflow dovrebbe avere qualche spiegazione in quanto questo sito vuole essere più di una libreria di frammenti. –