java.text.parseException: 无法解析的日期 1994-09-09
java.text.parseException: unparseable date 1994-09-09
我正在尝试将日期值从我的 java 程序发送到 oracle sql 数据库中。但我不断收到错误消息:java.text.parseexception: unparseable date.
我将日期格式设置为:
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()
。 See here
解决方案
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
java.sql.Date SQLDate = new java.sql.Date(df.parse(dob_text.getText()).getTime());
您的第一次尝试可能会抛出您提到的异常,因为 Josh 指出的格式错误。更正此问题后,会出现下一个问题:
java.sql.Date 不是 java.util.Date。因此,您不能只对 df.parse 的结果进行类型转换,即 java.util.Date。
第三:如果您向 SimpleDateFormat 提供模式,则可以省略语言环境。
以下代码运行无误:
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);
我正在尝试将日期值从我的 java 程序发送到 oracle sql 数据库中。但我不断收到错误消息:java.text.parseexception: unparseable date.
我将日期格式设置为:
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()
。 See here
解决方案
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
java.sql.Date SQLDate = new java.sql.Date(df.parse(dob_text.getText()).getTime());
您的第一次尝试可能会抛出您提到的异常,因为 Josh 指出的格式错误。更正此问题后,会出现下一个问题: java.sql.Date 不是 java.util.Date。因此,您不能只对 df.parse 的结果进行类型转换,即 java.util.Date。 第三:如果您向 SimpleDateFormat 提供模式,则可以省略语言环境。 以下代码运行无误:
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);