java.text.parseException:不可解析日期1994-09-09
我试图将java程序中的日期值发送到oracle sql数据库中。但我一直得到错误:java.text.parseexception:无法解析的日期 我将日期格式设置为:java.text.parseException:不可解析日期1994-09-09,java,sql,oracle,date,prepared-statement,Java,Sql,Oracle,Date,Prepared Statement,我试图将java程序中的日期值发送到oracle sql数据库中。但我一直得到错误:java.text.parseexception:无法解析的日期 我将日期格式设置为: SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH); java.sql.Date date = (java.sql.Date)df.parse(dob_text.getText()); 我已将数据库设置为相同的日期格
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH);
java.sql.Date date = (java.sql.Date)df.parse(dob_text.getText());
我已将数据库设置为相同的日期格式。
并尝试通过准备好的声明发送日期,如下所示:
ps.setDate(3, date);
我正在输入日期1994-09-09。这是我声明的正确日期格式,对吗?我的java构造代码有什么问题吗?还有其他人有这个问题吗?如果您有任何帮助,请将格式更改为yyyy-MM-dd 我刚写了这个程序,效果很好。确保您现在没有收到其他错误
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class DateFormatDemo
{
public static void main(String[] args) throws ParseException
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(df.parse("1994-09-09"));
}
}
这应该行得通,我纠正了2个错误:
- 首先,格式应该是
,因为这是您输入的格式yyyy-MM-dd
- 然后,您不能将
隐式转换为java.util.Date
,您需要使用java.sql.Date
构造函数和java.sql.Date
java.util.Date\getTime()
解决方案
您的第一次尝试可能会抛出您提到的异常,因为Josh指出的格式错误。纠正此问题后,会出现下一个问题: java.sql.Date不是java.util.Date。因此,您不能只键入df.parse的结果,它是java.util.Date。 第三:如果向SimpleDataFormat提供模式,则可以忽略区域设置。 以下代码运行时没有错误:
String input = "1994-09-09";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(input);
System.out.println( date);
java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
System.out.println( sqlDate);
您的格式使用前斜杠(
/
),但您的日期有破折号(-
)。您是否得到classcastexception?问题的第一个元素也是和的重复。请在post.FYI之前搜索StackOverflow.com,像,java.sql.date
和java.text.simpleDataFormat
这样非常麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。你看,我没耍花招,好买卖。请接受答案。只是点击向上箭头并不认为它是正确的答案。如果它不起作用,我就不能接受。我得到错误java.lang.classcastexception java.util.date无法转换为java.sql。date@JoshChappelle它没有做到这一点:)@Cillín然后使用newjava.sql.Date(df.parse(…).getTime())代码>您,先生。。你是个天才!谢谢大家!@我是西林:不客气:)我觉得这个问题不应该被记下来。对于一个noob来说,这并不是一个显而易见的答案。@Cillin确实不是,但事实上,没什么好担心的。@Cillin不,不是一个显而易见的答案。但是这个问题的两个要素已经在StackOverflow上讨论过很多次了。
String input = "1994-09-09";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(input);
System.out.println( date);
java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
System.out.println( sqlDate);