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();