Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一种格式的字符串日期转换为另一种格式的日期对象_Java_String_Date - Fatal编程技术网

Java 将一种格式的字符串日期转换为另一种格式的日期对象

Java 将一种格式的字符串日期转换为另一种格式的日期对象,java,string,date,Java,String,Date,我有一个格式为dd/MM/yyyy 现在我想把它转换成日期对象,格式为yyyy-MM-dd 目前我正在做 SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd"); Date dateObject = null; try { String date2 = formatter2.form

我有一个格式为dd/MM/yyyy

现在我想把它转换成日期对象,格式为yyyy-MM-dd

目前我正在做

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
Date dateObject = null;
  try {
    String date2 = formatter2.format(formatter.parse(date));
    dateObject = formatter2.parse(date2);
  }
输入为:“04/02/2013”

但我的日期对象是-->Mon Feb 04 00:00:00 IST 2013


所需输出为:2013-02-04(不是字符串,而是作为日期对象)

日期没有特定的输出格式。当你解析你的第一个日期时,那就是日期。只需存储它,当需要将其输出为所需格式时,请使用第二种
SimpleDateFormat

编辑


“存储它”,我的意思是保留对它的引用,直到您需要以所需的字符串格式表示它。

日期没有特定的输出格式。当你解析你的第一个日期时,那就是日期。只需存储它,当需要将其输出为所需格式时,请使用第二种
SimpleDateFormat

编辑


“存储它”,我的意思是保留对它的引用,直到您需要以所需的字符串格式表示它。

您已经在
date2
中获得了格式化日期。你不必再分析它了

String date2 = formatter2.format(formatter.parse(date));
//dateObject = formatter2.parse(date2); // Not needed

System.out.println(date2);

您已经在
date2
中获得了格式化日期。你不必再分析它了

String date2 = formatter2.format(formatter.parse(date));
//dateObject = formatter2.parse(date2); // Not needed

System.out.println(date2);

我认为你在这里提出了错误的问题。如注释中所述,查询数据库时需要使用此字符串格式,因此,由于JDBC使用java.sql.Date对象,因此,请严格遵守该格式,并将java.util.Date对象转换为JDBC托管类型,并直接使用它(无需担心格式)

试着这样做:

String stmt = "select field from table where dateColumn = ?";
PreparedStatement st = connection.prepareStatement(stmt);
st.setDate(1, new java.sql.Date (yourJavaUtilDateObj);
ResultSet rs = st.executeQuery();

应该适用于所有JDBC驱动程序。

我认为您在这里提出了错误的问题。如注释中所述,查询数据库时需要使用此字符串格式,因此,由于JDBC使用java.sql.Date对象,因此,请严格遵守该格式,并将java.util.Date对象转换为JDBC托管类型,并直接使用它(无需担心格式)

试着这样做:

String stmt = "select field from table where dateColumn = ?";
PreparedStatement st = connection.prepareStatement(stmt);
st.setDate(1, new java.sql.Date (yourJavaUtilDateObj);
ResultSet rs = st.executeQuery();
应该适用于所有JDBC驱动程序。

您的对象是正确的。日期包含有关日期的信息

您已经拥有带有日期的字符串和所需的掩码:

String date2 = formatter2.format(formatter.parse(date));
尝试:

你的目标是正确的。日期包含有关日期的信息

您已经拥有带有日期的字符串和所需的掩码:

String date2 = formatter2.format(formatter.parse(date));
尝试:

这是我的工作:

public Timestamp convertStringToTimeStamp(String dateinString){
        final String OLD_FORMAT = "dd/mm/yyyy";
        final String NEW_FORMAT = "yyyy-mm-dd";

        String newDateString;

        SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
        Date d = null;
        try {
            d = sdf.parse(dateinString);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdf.applyPattern(NEW_FORMAT);
        newDateString = sdf.format(d);

        return Timestamp.valueOf(newDateString+ " 00:00:00.00");
    }
这是我的工作:

public Timestamp convertStringToTimeStamp(String dateinString){
        final String OLD_FORMAT = "dd/mm/yyyy";
        final String NEW_FORMAT = "yyyy-mm-dd";

        String newDateString;

        SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
        Date d = null;
        try {
            d = sdf.parse(dateinString);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        sdf.applyPattern(NEW_FORMAT);
        newDateString = sdf.format(d);

        return Timestamp.valueOf(newDateString+ " 00:00:00.00");
    }


似乎您正在直接打印日期。只需打印日期2。我认为您无法选择日期对象的格式。我也不知道你为什么要那样。你可以用任何你喜欢的方式来展示它。。我需要那个date对象来查询database@Sudhanshu这是他的问题。虽然没有意义,但他希望Date对象直接包含所需字符串。@bhuvan:将java.util.Date转换为java.sql.Date,然后使用prepared语句的setDate()方法。不要弄乱格式!似乎您正在直接打印日期。只需打印日期2。我认为您无法选择日期对象的格式。我也不知道你为什么要那样。你可以用任何你喜欢的方式来展示它。。我需要那个date对象来查询database@Sudhanshu这是他的问题。虽然没有意义,但他希望Date对象直接包含所需字符串。@bhuvan:将java.util.Date转换为java.sql.Date,然后使用prepared语句的setDate()方法。不要弄乱格式!我不需要绳子。我需要里面的日期对象format@bhuvan不,您不需要特定的格式来使用JDBCas@NilsH的日期,在他的回答中,
java.util.Date
没有特定的格式。您只能将其格式化为所选的
字符串
表示形式。但是
Date
对象将始终保持这种状态。我不需要字符串。我需要里面的日期对象format@bhuvan不,您不需要特定的格式来使用JDBCas@NilsH的日期,在他的回答中,
java.util.Date
没有特定的格式。您只能将其格式化为所选的
字符串
表示形式。但是
Date
对象将始终保持这种方式。事实上,如果使用
System.out.println(dateObject)
,它将只使用默认的字符串格式,正如OP所观察到的那样。以自定义方式打印需要格式化程序。事实上,如果使用
System.out.println(dateObject)
,它将只使用默认的字符串格式,正如OP所观察到的那样。以自定义方式打印需要一个格式化程序。OP在评论中说他需要jdbc查询的日期,哇,实际上阅读OP想要的东西得到了否决票。。。令人惊讶的是,如果存储的类型实际上是日期,而不仅仅是日期字符串,那么这会起作用。因为OP想使用日期并说他需要日期,我想这不仅仅是胡乱猜测;)。我同意,但因为他想要一个特定的格式,我还是不确定。但无论如何,这是一个很好的建议。不,OP在评论中说他需要jdbc查询的日期,哇,实际上阅读OP想要的东西得到了否决票。。。令人惊讶的是,如果存储的类型实际上是日期,而不仅仅是日期字符串,那么这会起作用。因为OP想使用日期并说他需要日期,我想这不仅仅是胡乱猜测;)。我同意,但因为他想要一个特定的格式,我还是不确定。但无论如何,这是个好建议。