2012-08-24 37 views
1

我有這個問題轉換java.sql.Timestamp.toString回到java.sql.Timestamp。鑑於element = "2012-08-01 00:00:00.0"和使用下面的代碼將返回ParseException告訴elementUnparseable dateGroovy java.sql.Timestamp.toString()到java.sql.Timestamp

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

回答

2

使用日期是一個壞主意。 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")); 
} 
} 
+0

你可以提供一個代碼片段來關注。謝謝。 –

+0

您的輸入是「2012-08-01 00:00:00.0」正確嗎?您的SimpleDateFormatter與您正在使用的不同。我會在幾分鐘後發佈代碼。 –

+0

@DrJava添加了代碼..還添加了try catch來正確地捕獲異常以及null檢查。謝謝。 –

6

我認爲你應該簡化你的方法更groovyish。在groovy擴展中使用Date類。

def string_timestamp(element) { 
    def date = Date.parse('yyyy-MM-dd HH:mm:ss.S', element) 
    return new Timestamp(date.time) 
} 
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)前解析回來。

link to api:java.sql.Timestamp

相關問題