2017-04-05 94 views
0

我正在綁定從SQL服務器時間戳施放DateTime但我得到了這個錯誤我不知道我到底做了什麼錯誤。任何人都知道如何解決此問題? :java.sql.Timestamp不能轉換爲net.sourceforge.jtds.jdbc.DateTime

這在Java/Android的錯誤:

致命異常:主要過程:abtech.waiteriano.com.waitrer,PID:29858 java.lang.ClassCastException:
java.sql.Timestamp cannot be cast to net.sourceforge.jtds.jdbc.DateTime

我的時間戳記爲"2017-04-05 19:37:47:54",這是無法通過上述錯誤轉換爲Java DateTime對象的值。

和從錯誤的C#代碼(在SQL Server數據庫)這部分來源:

systime = (((DateTime) DTChecks.get("OpenIn").get(0)).toTime().getHours() * 60) + 
((DateTime) DTChecks.get("OpenIn").get(0)).toTime().getMinutes(); 

systime所述的值是日期 「2017年4月5日19:37:47.54」。我取回這通過使敬酒......

Toast.makeText(context,DTChecks.get("OpenIn").get(0) + "", Toast.LENGTH_LONG).show(); 
+0

一般來說這個錯誤意味着你混合兩種衝突的格式。你的(SQL)'Timestamp'看起來像什麼?從那以後,如果'DateTime'過程奏效,你的預期結果是什麼? –

+0

am只是將這段代碼作爲一個C#格式commin從sql server數據庫中反映出來,並將其反映爲Java格式,我也只是做了一個敬酒,以便確切地知道這個錯誤是什麼類型,並且用這條消息烤了「2017-04-05 19:37:47:54「,這是可以被鑄造的值@ VC.One –

+0

,這是我的Toast,它包含值爲 」Toast.makeText(context,DTChecks.get(「OpenIn」)。get 0)+「」,Toast.LENGTH_LONG).show();「 –

回答

1

如果你可以從C#讓您的時間戳爲的Java,並有(CAST)作爲Java String那麼這段代碼示例代碼應該可以幫助你:

首先聲明一些變量:

​​ 在你的代碼的主要部分

然後:

//# set it up to match exactly like incoming time/date format 
dateForm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS"); 

//# set your input TimeStamp for Date convert 
str_TS = "2017-04-05 19:37:47:54"; 
//srt_TS = C_Sharp_TimeStamp.toString(); //untested 

//# Convert via function then check result 
myJavaDate = convertStringToDate(str_TS); 
System.out.println("myJavaDate : " + myJavaDate); 

下面是支持convertStringToDate功能:

public static Date convertStringToDate(String input) 
{ 
    try { Date date = (Date) dateForm.parse(input); return date; } 
    catch (ParseException exc) { System.out.println("Date Converting Error : " + exc); return null; } 
} 

檢查println結果,應該說:

myJavaDate : Wed Apr 05 19:37:47 UTC 2017 


注: 注意SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")具有所需-:符號甚至space在正確的位置匹配確切相同風格的你C#時間戳格式?請注意,如果您做了任何錯誤的部分,那麼它將無法轉換爲Date ... 例如:如果您的字符串爲05/04/2017...,那麼您聲明("dd/MM/yyyy...等等以獲得成功。

另外SSS爲毫秒,但Date無論如何都忽略該部分。

+0

非常感謝您的答案,但我需要返回DateTime不是日期:D –

+0

我認爲時間戳應該投出,而不是DateTime –