2012-12-26 6 views
19

Sab 1 dicembre 00:00:00 GMT 2012Come convertire la data in aaaa-MM-gg Formato?

devo convertire sopra la data in seguito formato

2012-12-01

come posso?

ho provato con seguente metodo, ma il relativo funzionamento

public Date ConvertDate(Date date){ 

    DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
    String s = df.format(date); 
    String result = s; 
    try { 
     date=df.parse(result); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return date; 
    } 
+2

5 tag data, ma non pensavi che la lingua che stai usando fosse abbastanza importante da menzionare? – Oded

+0

qual è il significato in questo metodo 'public Date ConvertDate (Date date)'? – vels4j

+0

@ vels4j ha restituito la data con il formato di aaaa-MM-gg –

risposta

49

Usa questa.

java.util.Date date = new Date("Sat Dec 01 00:00:00 GMT 2012"); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 
String format = formatter.format(date); 
System.out.println(format); 

si otterrà l'output come

2012-12-01 
+0

+1 e il nuovo metodo Date() è obsoleto. deve usare Calendar invece – vels4j

+5

Grande scelta di nomi di variabili. – Armada

2
String s; 
Format formatter; 
Date date = new Date(); 

// 2012-12-01 
formatter = new SimpleDateFormat("yyyy-MM-dd"); 
s = formatter.format(date); 
System.out.println(s); 
2

Non è possibile formattare il Date stesso. È possibile ottenere il risultato formattato solo in String. Utilizzare SimpleDateFormat come indicato da altri.

Inoltre, la maggior parte del getter methods in Date sono deprecated.

3

UPDATE La mia risposta qui è ormai superata. Il progetto Joda-Time è ora in modalità di manutenzione, consigliando la migrazione alle classi java.time. Vedi la soluzione moderna nel Answer by Ole V.V..

Joda Time

La risposta accettata dalla NidhishKrishnan è corretto.

Per divertimento, ecco lo stesso tipo di codice in Joda-Time 2.3.

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

java.util.Date date = new Date(); // A Date object coming from other code. 

// Pass the java.util.Date object to constructor of Joda-Time DateTime object. 
DateTimeZone kolkataTimeZone = DateTimeZone.forID("Asia/Kolkata"); 
DateTime dateTimeInKolkata = new DateTime(date, kolkataTimeZone); 

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); 
System.out.println("dateTimeInKolkata formatted for date: " + formatter.print(dateTimeInKolkata)); 
System.out.println("dateTimeInKolkata formatted for ISO 8601: " + dateTimeInKolkata); 

Quando eseguito ...

dateTimeInKolkata formatted for date: 2013-12-17 
dateTimeInKolkata formatted for ISO 8601: 2013-12-17T14:56:46.658+05:30 
1

risposta moderna: Usa LocalDate dal java.time, il moderno data e l'ora API Java, e il suo toString metodo:

LocalDate date = LocalDate.of(2012, Month.DECEMBER, 1); // get from somewhere 
    String formattedDate = date.toString(); 
    System.out.println(formattedDate); 

Questo stampa

2012-12-01

Una data (se stiamo parlando java.util.Date o java.time.LocalDate) non ha un formato in esso. Tutto ciò che si ottiene è un metodo toString che produce un certo formato e non è possibile modificare il metodo toString. Fortunatamente, LocalDate.toString produce esattamente il formato che hai richiesto.

La classe Date è obsoleta e la classe SimpleDateFormat che si è tentato di utilizzare è notoriamente problematica.Ti raccomando di dimenticarti di quelle lezioni e usa invece java.time. La moderna API è molto più bella con cui lavorare.

Eccetto: succede che si ottiene un Date da un'API legacy che non è possibile modificare o non si desidera modificare solo ora. La cosa migliore che puoi fare con esso è convertirlo in java.time.Instant e fare eventuali ulteriori operazioni da lì:

Date oldfashoinedDate = // get from somewhere 
    LocalDate date = oldfashoinedDate.toInstant() 
      .atZone(ZoneId.of("Asia/Beirut")) 
      .toLocalDate(); 

Si prega di sostituire il fuso orario desiderato se non è successo di essere in Asia/Beirut. Quindi procedere come sopra.

Link:Oracle tutorial: Date Time, che spiega come utilizzare java.time.