java.sql.Timestamp无法强制转换为net.sourceforge.jtds.jdbc.DateTime

时间:2017-04-05 21:06:59

标签: java android

我想从SQL服务器时间戳中强制转换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服务器数据库中):

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

systime的值是日期“2017-04-05 19:37:47.54”。我通过祝酒来恢复这个......

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

2 个答案:

答案 0 :(得分:1)

如果您可以将 C#的时间戳记录为 Java 并将其(演员)作为Java String,那么此代码示例代码可以帮助您:

首先声明一些变量:

static Date myJavaDate; //create (Java) Date object
static DateFormat dateForm; //will setup to match incoming C# time format 
static String str_TS; //string holds the C# TimeStamp

然后在代码的主要部分:

//# 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无论如何都会忽略该部分。

答案 1 :(得分:1)

您的导入中似乎有strange library。确保删除看起来像这样的行:

import net.sourceforge.jtds.jdbc.Datetime;

至于如何实际执行此操作,请按照此问题中的说明操作:

How to get a java.time object from a java.sql.Timestamp without a JDBC 4.2 driver?