Java 将日期转换为字符串时出错

Java 将日期转换为字符串时出错,java,datetime,timestamp,long-integer,date-parsing,Java,Datetime,Timestamp,Long Integer,Date Parsing,在执行上述代码时,我遇到了以下错误: Date date = new Date(); try { date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(s); } catch (ParseException e) { // TODO Auto-generated catch block e.printStack

在执行上述代码时,我遇到了以下错误:

        Date date = new Date();
        try {
            date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(s);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Timestamp timestamp=new Timestamp(date.getTime());
        id=Long.parseLong(timestamp.toString());

现在它有什么问题?

当您尝试通过
Timestamp.toString()
获取long值时,会发生错误,因为它返回
2018-08-29 16:35:31.753
,这不是有效的long

只需使用:

java.lang.NumberFormatException: For input string: "2018-08-29 16:35:31.753"
    at 
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

timestamp.toString()
返回“2018-08-29 16:35:31.753”-您不能在上面使用
Long.parseLong
。你到底想做什么?正如greg-449所说,你正在将一个日期字符串解析为一个长变量,这不起作用,因为你需要在一个字符串变量中设置一个长的表示形式。如果试图获取毫秒,则需要使用
long id=date.getTime()
我建议您避免使用
SimpleDateFormat
类。它不仅早已过时,而且还出了名的麻烦。今天,我们有这么多更好的。可能重复的。请搜索,您将找到更多有用的问题和答案。
LocalDateTime.parse(“2018-08-29 16:35:31.753”)。替换(“”,'T')).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()
。在我的电脑上,它给出了(所有奇数)15355331753,但结果取决于时区。
long id = timestamp.getTime();