2015-06-23 6 views
-1

У меня возникает эта проблема, из-за которой я не могу окутать голову. Я читал похожие вопросы, но в самом деле я нашел, что есть проблема с форматом, и мой формат верен.Преобразование строки в метку времени Java

В основном я пытаюсь преобразовать String в метку времени, и я получаю непогрешимую ошибку даты.

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

Поскольку есть два типа шаблонов, я следую этому подходу. Надеюсь, это поможет. :-) – edubriguenti

+0

Если это поможет, пожалуйста, проверьте его как ответ. – edubriguenti

0

"2015-06-09 11: 51: 12708" работает для меня, но "2015-04-17 11: 29: 49,564" вона «т. Вы задали регулярное выражение для "," so "." не будет. Это совершенно нормально.

0

вам нужно исправить запятая

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

 Смежные вопросы

  • Нет связанных вопросов^_^