将java.sql.Timestamp.toString
转换回java.sql.Timestamp
时遇到此问题。给定element = "2012-08-01 00:00:00.0"
并使用下面的代码会返回ParseException
,告知element
是Unparseable date
。
import java.sql.Timestamp
import java.text.SimpleDateFormat
Timestamp string_timestamp(String element) {
if(!date)
return null
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy")
// error lies here! //
Date parsedDate = dateFormat.parse(date)
return new Timestamp(parsedDate.getTime())
}
有没有办法将java.sql.Timestamp.toString()
转换回java.sql.Timestamp
?
答案 0 :(得分:6)
我认为你应该简化你的方法以更加狂野。将Date
类与groovy扩展名一起使用。
def string_timestamp(element) {
def date = Date.parse('yyyy-MM-dd HH:mm:ss.S', element)
return new Timestamp(date.time)
}
答案 1 :(得分:3)
使用日期是一个坏主意。日期不能很好地处理TimeZone格式等。看看你是否可以使用Calendar Object。另请注意,像date.getYear()这样的内容会为您提供2012-1900而不是您期望的年份。我使用下面的日期给你一个例子:a
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;
class ABC {
public Timestamp string_timestamp(String element) throws Exception {
//if(!element)
//return null;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
// error lies here! //
Date parsedDate = dateFormat.parse(element);
return new Timestamp(parsedDate.getTime());
}
public static void main(String[] args) throws Exception {
ABC a = new ABC();
System.out.println(" Value = " + a.string_timestamp("2012-08-01 01:12:56.0"));
}
}
答案 2 :(得分:0)
我知道我可能会迟到一点,但我偶然发现了这一点并且认为我给了我两分钱。
Java Timestamp
对象具有static valueOf(String s)
方法。
根据API:
static Timestamp valueOf(String s)
Converts a String object in JDBC timestamp escape format to a Timestamp value.
注意:字符串需要采用JDBC格式...因此,如果您将日期解析为其他格式,则可能需要在调用Timestamp.valueOf(element)
之前将其解析回来。
链接到api:java.sql.Timestamp