2016-10-25 2 views
-2

Am bekommen Antwort alsDatumsformat in java

"pickTime": "Tue Oct 25 03:57 PM" 

i codiert war, wie zu bekommen folgt.

SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a"); 
       SimpleDateFormat dateFormater = new SimpleDateFormat("E MMM dd"); 
       SimpleDateFormat timeFormater = new SimpleDateFormat("hh:mm a"); 

String time = jsonObj.optString("pickTime"); 
Date dateObj = curFormater.parse(time); 
String newDateStr = dateFormater.format(dateObj); 
String newTimeStr = timeFormater.format(dateObj); 

Das Problem ist, ich denselben Wert in String time bin immer aber in dateobj Ich erhalte Wert als

"sun oct 25 15.57 pm" 

newDatestr als

"sun oct 25" 

mir bitte helfen, dieses Problem zu lösen, danke im voraus

+4

Sie würden von einem Jahr in Ihrem 'PickTime' Wert profitieren. Überprüfen Sie auch das Datum Ihres Geräts: der letzte Sonntag, der 25. Oktober war 2015. –

+0

Ich werde Jahr als Antwort nicht erhalten, dann, wie ich es tun kann ?. Wie Sie gesagt haben, verstehe ich, dass ohne Jahr, Standard als 1970 genommen, bin ich richtig? –

+0

'pickTime + =" "+ currentYear', füge es dem 'SimpleDateFormat'-Muster hinzu. –

Antwort

0

Es nimmt den 25. Oktober 1970 (Linux-Zeit).

Sie müssen herausfinden, wie Sie das Jahr zum Datum hinzufügen, da es nicht das aktuelle Jahr nimmt.

Es dauert die Standard-eins (die Linux-Zeit beginnt am 1. Januar 1970).

+0

wie es zu korrigieren, Jahr wird nicht als Antwort kommen. Dann ist es möglich, mein Problem zu lösen. wenn es mir so sagt. –

+0

Ja, verwenden Sie: "int Jahr = Calendar.getInstance(). Get (Calendar.YEAR);" um das Jahr zu bekommen http://stackoverflow.com/questions/136419/get-integer-value-of-the-current-year-in-java –

+0

danke für Ihre Hilfe.Ich habe schon so getan. Aber es wird nicht sein aktuelles Jahr immer, denn wenn wir im Dezember 2016 sind, kann die PickTime auf 2017 (Antwort) sein. Zu dieser Zeit wird es nicht funktionieren. –

-1
SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a"); 

in der Grund, warum Sie

E.
SimpleDateFormat curFormater = new SimpleDateFormat("EEE MM dd yyyy hh:mm a"); 

gesetzt haben ich denke, das Format sein sollte.

+0

Das macht keinen Sinn, wenn das Jahr nicht in der Datenfolge ist – Jens

0

Ihre Antwort enthält kein Jahr. Sie erhalten also eine falsche Ausgabe.

Unten Code funktioniert, probieren Sie es aus.

Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     SimpleDateFormat curFormater = new SimpleDateFormat("E MMM dd hh:mm a yyyy"); 
     SimpleDateFormat dateFormater = new SimpleDateFormat("E MMM dd"); 
     SimpleDateFormat timeFormater = new SimpleDateFormat("hh:mm a"); 

     String time = "Tue Oct 25 03:57 PM" + " " + calendar.get(Calendar.YEAR); 
     Date dateObj = null; 
     try { 
      dateObj = curFormater.parse(time); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
     Logger.logd(this, dateObj.toString()); 

     String newDateStr = dateFormater.format(dateObj); 
     String newTimeStr = timeFormater.format(dateObj); 
     Logger.logd(this, newDateStr + " " + newTimeStr); 
+0

das ist ich weiß, bin eine Lösung für dieses ohne Jahr als Antwort zu fragen. –

+0

siehe aktualisierten Kommentar. Ich testete und seine Arbeit –

+0

danke für Ihre Hilfe.Ich habe bereits getan wie dies.Aber es wird nicht aktuellen Jahr immer, denn wenn wir im Dezember 2016 sind, kann die PickTime auf 2017 (Antwort) sein. Zu dieser Zeit wird es nicht funktionieren. –

0
SimpleDateFormat formatter =new SimpleDateFormat("EEE MMM dd hh:mm a"); 
    Date date2 = formatter.parse("Tue Oct 25 03:57 PM"); 
    long time = date2.getTime(); 
    Calendar cal = Calendar.getInstance(); 
    cal.setTimeInMillis(time); 
    cal.set(Calendar.YEAR, 2016); 
    String formatted = formatter.format(cal.getTime()); 

    System.out.println(formatted); 

@ David Marciel ist richtig. Sie sollten Jahr angeben.