我有以下代码,它将Java LocalDate
转换为特定格式,同时作为setDate
的参数传递。
LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MMM yyyy");
String formattedString = localDate.format(formatter);
storedProcedureCall.setDate(1, java.sql.Date.valueOf(formattedString));
但是当我在IllegalArgumentException
的参数中包含formattedString
时,它总是会引发setDate
但是当我这样做时可以正常工作:
storedProcedureCall.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now()));
一般来说:
storedProcedureCall.setDate(2, java.sql.Date.valueOf(java.time.LocalDate.now())); // working
storedProcedureCall.setDate(2, java.sql.Date.valueOf(formattedString)); // not working
答案 0 :(得分:0)
java.util.Date
这应该有效。但是,如果您使用的标准库使用LocalDate
而不是old
这样的新类,那么使用storedProcedureCall
java类会更加舒适。
据我了解,您的目标是将当前日期设为long
。在Java中,任何日期都是storedProcedureCall.setDate(1, new java.util.Date());
。在将其转换为String之前,请不要担心本地和其他功能。所以你只用一行解决问题:
24 oct 2017
P.S。如何将Date
转换为storedProcedureCall
个实例并将其设置为storedProcedureCall.setDate(1, new SimpleDateFormat("dd MMM yyyy", Locale.US).parse("24 oct 2017"));
:
let date1: string = params.data.incidentTime;
let date2: string = params.data.creationTime;
let diffInMs: number = Date.parse(date2) - Date.parse(date1);
let diffInHours: number = diffInMs / 1000 / 60 / 60;
console.log(diffInHours);
答案 1 :(得分:-1)
使用此格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
您的代码应该是这样的:
LocalDate localDate = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedString = localDate.format(formatter);
storedProcedureCall.setDate(1, java.sql.Date.valueOf(formattedString));