2016-01-19 73 views
-1

我想解析我的字符串,它是這種格式19, 1 19, 2016 12:25 pm和我的SimpleDateFormat是EEEE, MMMM dd, yyyy hh:mm a。我解析我的上面的字符串日期爲Tuesday, January 19, 2016 12:25 pm,但它在這裏拋出parceable異常。我的代碼如下,請在這裏幫助我。從字符串解析日期偏移量(0)的不可解析日期異常Android

stestRequest = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); 
// stringDate = "19, 1 19, 2016 12:25 pm" 
dateRequestSelected  = stestRequest.parse(stringDate); 

請在這裏幫助我,在此先感謝。

+0

你stringdate有不同的格式,然後在你的模式。第19個應該是什麼? – Jens

+0

** stringDate **必須是「Date」格式 –

+0

@DanhDC否解析展開一個字符串。 – Jens

回答

1

試試這個

ParsePosition pos = new ParsePosition(0); 
SimpleDateFormat simpledateformat = new SimpleDateFormat("MM dd, yyyy hh:mm a"); //your date string format is : 1 19, 2016 12:25 pm 
Date stringDate = simpledateformat.parse(date, pos); 
SimpleDateFormat dayFormat = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); //Tuesday, January 19, 2016 12:25 pm, 
System.out.println(dayFormat.format(stringDate)); 
0

所以,如果您的日期字符串爲1 19, 2016 12:25 pm

你定義來定義日期格式至極correspondens到您的字符串:

SimpleDateFormat sdf = new SimpleDateFormat("MM dd',' yyyy hh:mm aa"); 

然後,你必須解析字符串:

Date date = sdf.parse(dateString); 

下一步是定義格式輸出:

SimpleDateFormat stestRequest = new SimpleDateFormat("EEEE',' MMMM dd',' yyyy hh:mm a"); 

然後你必須CAL格式:

stestRequest.format(date); 

欲瞭解更多信息,請參閱的SimpleDateFormat

0

文檔試試這個。 ...

 String stringDate = "01 19, 2016 12:25 pm"; 
     SimpleDateFormat oldSdf = new SimpleDateFormat("MM dd, yyyy hh:mm a"); 
     SimpleDateFormat newSdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); 
     String dateRequestSelected = null; 
     try { 
      dateRequestSelected = newSdf.format(oldSdf.parse(stringDate)); 
      Log.e("Date", dateRequestSelected); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

輸出:週二,2016年1月19日下午12:25

編輯:

 String stringDate = "01 19, 2016 12:25 pm"; 
     SimpleDateFormat oldSdf = new SimpleDateFormat("MM dd, yyyy hh:mm a"); 
     SimpleDateFormat newSdf = new SimpleDateFormat("EEEE, MMMM dd, yyyy hh:mm a"); 
     Date dateRequestSelected = null; 
     try { 
      dateRequestSelected = newSdf.parse(newSdf.format(oldSdf.parse(stringDate))); 
      Log.e("Date", dateRequestSelected+""); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 

輸出:星期二1月19日12:25:00 GMT + 05:30 2016

+0

感謝您的回答。你能告訴我,有一件事,是否有可能製作日期對象如2016年1月19日星期二下午12:25。因爲我必須在服務器上發送這樣的Date對象。 –

+0

是的,你可以但它會改變輸出。檢查編輯的答案。 –

0

新的Date()。toString()方法將爲您提供一個格式化日期的日期。您可以將其寫入文件,然後在閱讀文件時,可以使用新日期(字符串)解析日期。例如:

package Testers; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.util.Date; 

public class Datestufff { 

public void recordCurrentDate(File file){ 
    try { 
     BufferedWriter writer = new BufferedWriter(new FileWriter(file)); 
     String date = new Date().toString(); 
     writer.write(date); 
     writer.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public String getDate(File file){ 
    String date = "Unknown!"; 
    try { 
     BufferedReader reader = new BufferedReader(new FileReader(file)); 
     String line = reader.readLine(); 
     date = line; 
     reader.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return date; 
} 

public void recordDate(File file, Date date){ 
    try { 
     BufferedWriter writer = new BufferedWriter(new FileWriter(file)); 
     writer.write(date.toString()); 
     writer.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

}