2015-02-08 19 views
0

我是OFBiz和Java中的新手。我使用波紋塊代碼來檢查日期時間輸入並將其用於表格中的搜索。Java util.numberFormatException輸入字符串:「2014-01-12 05-44-56」

Timestamp strtDate = UtilDateTime.getTimestamp((String)request.getParameter("strt_date")); 
if(strtDate != null) 
{ 
    // then here i used the date for taking data. 
} 

當我填寫表格的日期時間字段進行搜索或當選擇occure這個節目numberFormatException搜索錯誤沒有日期,所以我怎麼能解決?感謝任何幫助和指導。

回答

0

您必須以毫秒爲單位傳遞時間,而不是傳遞時間。

你也可以檢查代碼:

public static Timestamp getTimestamp(String milliSecs) throws NumberFormatException { 
    return new Timestamp(Long.parseLong(milliSecs)); 
} 

它將解析長你所傳遞的數據應該是有效的長期價值。

2

基於Apache ofbiz API,它看起來像UtilDateTime#getTimestamp(String)預計的毫秒值。您正在通過"2014-01-12 05-44-56"。你需要先解析你的約會。隨着預純java的1.8(記住,格式化不是線程安全的):

String dateString = "2014-01-12 05-44-56"; 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); 
Date date = formatter.parse(dateString); 
UtilDateTime.getTimestamp(date.getTime()); 

由於Java 1.8(強烈推薦,如果你能切換!):

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss"); 
ZonedDateTime date = ZonedDateTime.parse(text, formatter); 
long millis = date.toInstant().toEpochMilli(); 
+0

我應該計算日期時間爲毫秒爲先?那麼我應該使用它。 – jones 2015-02-08 11:16:42

+0

你也可以提供一個毫秒數的字符串作爲輸入。但是,如果您以您在文章中指定的格式提供日期,那麼是的,您需要轉換。不要忘記考慮時區,如果這在你的項目中很重要:) – theadam 2015-02-08 11:23:27

0

request.getParameter("strt_date")會無論如何返回String,所以沒有必要明確地將其轉換爲String。此外,在所需的日期格式上將會有Client & Server之間的合約。因此,您必須使用SimpleDateFormat以相同格式解析字符串日期。代碼展望看起來像下面:

SimpleDateFormat formatter = new SimpleDateFormat("contract-date-format"); 
Date date = formatter.parse(request.getParameter("strt_date")); 
UtilDateTime.getTimestamp(date.getTime());