Groovy java.sql.Timestamp.toString()到java.sql.Timestamp

时间:2012-08-24 01:51:50

标签: groovy simpledateformat

java.sql.Timestamp.toString转换回java.sql.Timestamp时遇到此问题。给定element = "2012-08-01 00:00:00.0"并使用下面的代码会返回ParseException,告知elementUnparseable 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

3 个答案:

答案 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