1

我有这个问题转换java.sql.Timestamp.toStringjava.sql.Timestamp. 给定并使用下面的代码将element = "2012-08-01 00:00:00.0"返回一个.ParseExceptionelementUnparseable 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?

4

3 回答 3

6

我认为你应该简化你的方法,使其更加时髦。使用Date带有 groovy 扩展的类。

def string_timestamp(element) {
    def date = Date.parse('yyyy-MM-dd HH:mm:ss.S', element)
    return new Timestamp(date.time)
}
于 2012-08-24T08:35:27.110 回答
3

使用 Date 是个坏主意。Date 不能很好地处理 TimeZone 格式等。看看你是否可以使用日历对象。另请注意,像 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"));
}
}
于 2012-08-24T01:59:01.397 回答
0

我知道我参加聚会可能有点晚了,但是我偶然发现了这一点,并想给我两分钱。

JavaTimestamp对象有一个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

于 2016-12-10T20:02:56.060 回答