2016-05-12 1 views
0

Ich kann die Ausgabe als Wed May 11 15:36:08 IST 2016 erhalten, aber wie konvertiere ich das Datum in eine Zeichenfolge mit dem erforderlichen Format?Wie man gegebenes Zeichenkettenformat zu dd-MMM-yyyy hh: mm: ss: aa?

Erforderliches Format ist: 12-05-2016 16:05:08 pm

Was ich versucht heißt

public class Test { 
    public static void main(String args[]) throws ParseException{ 
     String epoche="1462961108000"; 
     Long initialLogTime = Long.valueOf(epoche); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(initialLogTime); 
     Calendar fromDateTime = calendar; 
     Calendar toDateTime = fromDateTime; 
     toDateTime.add(Calendar.MINUTE, 30); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss:aa"); 
     String datestring = String.valueOf(fromDateTime.getTime()); 
     String datestring1 = String.valueOf(toDateTime.getTime()); 
     System.out.println(datestring); //here output is Wed May 11 15:36:08 IST 2016 
     System.out.println(datestring1); // here output is Wed May 11 15:36:08 IST 2016 
     Date dates = dateFormat.parse(datestring); 
     Date date1s = dateFormat.parse(datestring1); 
     System.out.println(dates); 
     System.out.println(date1s); 
    } 
} 

Der Fehler Ich erhalte ist:

Exception in thread "main" java.text.ParseException: Unparseable date: "Wed May 11 16:05:08 IST 2016" 
at java.text.DateFormat.parse(DateFormat.java:357) 
at test.Test.main(Test.java:27) 
+2

Warum konvertieren Sie in eine Zeichenfolge dann Parsen, wenn Sie bereits * haben * den Wert? Es ist unklar, was das ultimative Ziel hier ist ... (Wenn es nur um den Wert als String zu formatieren, sollten Sie überhaupt nicht 'Parse 'aufrufen.) –

+0

Wie bereits erwähnt, sollte' SimpleDateFormat' mit der Methode aufgerufen werden 'format()' auf dem 'Date'-Objekt, nicht' parse() 'auf dem' String'-Objekt, um das gewünschte Ergebnis zu erhalten – Draken

+0

Wenn Sie das SimpleDateFormat verwenden, beachten Sie, dass es sich um einen Formatierer handelt. Es kann analysieren und formatieren. Parsen bedeutet, dass Sie in eine Typinstanz wie zum Beispiel ein Datum konvertieren. Formatierung bedeutet, dass Sie es im Wesentlichen in eine lesbare Form konvertieren, normalerweise in Form eines Strings. In Ihrem Fall haben Sie bereits ein Datum und Sie brauchen keinen Zwischenschritt, wie Sie es versuchten. –

Antwort

3

Sie benötigen Daten entsprechend zu formatieren. Dies soll Ihnen helfen,

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa"); 
    System.out.println(dateFormat.format(fromDateTime.getTime())); 
    System.out.println(dateFormat.format(toDateTime.getTime())); 
+0

Ihr Format 'dd-MMM-yyyy HH: mm: ss: aa' gibt Ausgabe' 11-May-2016 15: 35: 08: PM' –

+0

@ ankur-singhal Die API scheint keine Alternative zu niedrigeren zu bieten Fall [SimpleDateFormat]] (https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html), so würde ich vorschlagen, nur die Großbuchstaben PM/AM zu Kleinbuchstaben vielleicht durch zu ersetzen Suchen und Ersetzen oder Teilen. –

+1

@JoaoEsperancinha Ich zeigte tatsächlich auf 'Mai' anstelle von' 05' –

0

, wenn Sie 8 Java verwenden, Sie

LOCALDATE date = LocalDate.now() verwenden können;

DateTimeFormatter Formatierer = DateTimeFormatter.ofPattern ("dd-MMM-yyyy HH: mm: ss: aa");

System.out.println (date.format (Formatierer));

0

Bitte versuchen Sie diese

public static void main(String[] args) { 
     String epoche = "1462961108000"; 
     Date date = new Date(Long.parseLong(epoche)); 
     DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:aa"); 
     String strDate = sdf.format(date); 
     System.out.println(strDate); 
    } 

Ausgabe

11-05-2016 15:35:08:PM 
-1

In Android, Pass String Wie 11/10/2017 11:16:46ConvertDateTime funktionieren

public String ConvertUpdate(String strDate) { 

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    try { 
     Date d = simpleDateFormat.parse(strDate); 
     simpleDateFormat = new SimpleDateFormat("dd MMM yy hh:mm a"); 

     return simpleDateFormat.format(d); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

Ausgang 10 17. November 11.16

Verwandte Themen