2015-06-23 40 views
-1

所以我有這個問題,我不能包裹我的頭。我讀過類似的問題,但我發現格式有問題,而且格式正確。將字符串轉換爲時間戳Java

基本上我試圖將字符串轉換爲時間戳,並且我得到了不可解析的日期錯誤。

import java.sql.Timestamp; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
public class Hello { 

public static Timestamp convertStringToTimestamp(String str_date) { 
    try { 

     SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"); 
     Date date = formatter.parse(str_date); 
     java.sql.Timestamp timeStampDate = new Timestamp(date.getTime()); 
     return timeStampDate; 

    } catch (ParseException e) { 
     System.out.println("Exception :" + e); 
     return null; 
    } 
} 

public static void main(String[] args) { 
    Timestamp ts = convertStringToTimestamp("2015-06-09 11:51:12,708"); 
    Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564"); 
    System.out.println(ts +" | "+ts2); 


} 

} 

輸出:

Exception :java.text.ParseException: Unparseable date: "2015-06-09 11:51:12,708" 
Exception :java.text.ParseException: Unparseable date: "2015-04-17 11:29:49.564" 
null | null 

任何想法?

+1

是的,你有','在你的日期格式,並在你的日期字符串你'.'試圖改變這一點,它應該工作 – user902383

+1

您的代碼工作在我的機器上的第一個日期完美罰款...你使用自定義的JRE或東西? – Codebender

+0

JavaSE-1.8 這是錯的嗎? – jensd

回答

-2
**Update** 
import java.sql.Timestamp; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 


public class SomeClass { 

    public static void main(String[] args) { 


     System.out.println(convertStringToTimestamp("2015-06-09 11:51:12,708")); 
     //be consistent here with , and . 
     System.out.println(convertStringToTimestamp("2015-04-17 11:29:49.564")); 
     System.out.println(); 


    } 

    private static Timestamp convertStringToTimestamp(String something) { 


SimpleDateFormat dateFormat = null; 
     if(something.contains(".")) { 
      dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); 
     } 
     if(something.contains(",")) { 
      dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss,SSS"); 
     } 
     Timestamp timestamp = null; 
      Date parsedDate; 
      try { 
       parsedDate = dateFormat.parse(something); 
       timestamp = new java.sql.Timestamp(parsedDate.getTime()); 

      } catch (ParseException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      return timestamp; 
    } 



} 
+0

這是否解決了這個問題? – Jesper

+0

@Jesper它解決了這個問題「Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());」這很難理解嗎? – ASP

+0

但這與OP已發佈的內容沒有什麼不同。 (仔細查看問題中的代碼)。 – Jesper

0

這對我來說很完美。

我剛剛通過模式作爲輸入以及。

public static Timestamp convertStringToTimestamp(String str_date, String pattern) { 
     try { 

      SimpleDateFormat formatter = new SimpleDateFormat(pattern); 
      Date date = formatter.parse(str_date); 
      java.sql.Timestamp timeStampDate = new Timestamp(date.getTime()); 
      return timeStampDate; 

     } catch (ParseException e) { 
      System.out.println("Exception :" + e); 
      return null; 
     } 
    } 

    public static void main(String[] args) { 
     Timestamp ts = convertStringToTimestamp("2015-06-09 11:51:12,708", "yyyy-MM-dd HH:mm:ss,SSS"); 
     Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564", "yyyy-MM-dd HH:mm:ss.SSS"); 
     System.out.println(ts +" | "+ts2); 


    } 

輸出是:

2015-06-09 11:51:12.708 | 2015-04-17 11:29:49.564 
+0

是的,這是有效的,但是通過格式化程序作爲參數很麻煩,但是我明白你爲什麼做了這個,這是由於我的逗號/點實現。 謝謝! – jensd

+0

由於有2種模式我遵循這種方法。希望有所幫助。 :-) – edubriguenti

+0

如果有幫助,請檢查它作爲答案。 – edubriguenti

0

「2015-06-25 11:51:12708」 爲我工作,但 「2015年4月17日11:29:49.564」 韓元「T。你爲「」指定了正則表達式,所以「」。不會。這是完全正常的。

0

你需要修復的逗號

Timestamp ts2 = convertStringToTimestamp("2015-04-17 11:29:49.564"); 
相關問題