我想从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();
答案 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?