如何将具有给定格式的java.util.Date转换为String实例?

时间:2015-07-20 16:49:02

标签: java date


我是Java的新手,正在尝试将String日期转换为某种java.util.Date格式。 un-parsed字符串日期为yyyy-MM-dd HH:mm:ss模式,我想将其更改为dd-MM-yyyy,因为我写了一些第一个实现,如下所示:

import java.text.SimpleDateFormat;

public class testDate {

    public void parseDate() {
        try {
            String testDate = "2015-06-19 00:00:00.000000";
            SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy");
            java.util.Date parsedDate = format1.parse(testDate);
            System.err.println(parsedDate);
        } 
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        testDate td = new testDate();
        td.parseDate();
    }

}

作为新手,输出 Tue Dec 05 00:00:00 IST 24 对我来说意外:)。

所以,我会要求建议或指出我哪里出错了。感谢

注意: - 有一个类似的帖子(Convert java.util.Date to String),但它讨论的是将一种Date格式解析为另一种格式,而不是String解析为另一种Date格式< / p>

5 个答案:

答案 0 :(得分:3)

您对解析和呈现日期感到困惑。您需要使用它所使用的格式来解析日期,当然,您可以使用其他格式进行渲染。

        String testDate = "2015-06-19 00:00:00.000000";
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date parsedDate = format1.parse(testDate);
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy");
        System.err.println(format2.format(parsedDate));

答案 1 :(得分:3)

SimpleDateFormat应该有正确的模式来解析给定的字符串。如果你像这样构造format1

<div>
    <pre>
        @Model.Exception.InnerException
    </pre>
</div>

<div>
    <pre>
        @Model.Exception.Message
    </pre>
</div>

“解析”调用将在给定日期正常工作。之后,您可以根据自己的需要对其进行格式化:

SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

答案 2 :(得分:1)

您的String似乎与SimpleDateFormat的格式不同。

 String testDate = "19-06-2015";
 SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy");
 Date date;
try {
    date = format1.parse(testDate);
      System.out.println(date);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 3 :(得分:1)

您没有正确解析输入日期。 format1应该是传入日期的格式,而不是您希望日期的格式。

try {
  String testDate = "2015-06-19 00:00:00.000000";
  SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
  java.util.Date parsedDate = format1.parse(testDate);
  SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy");
  System.err.println(format2.format(parsedDate));
} 

答案 4 :(得分:1)

解析字符串时,您需要一个表示原始日期的Date对象。因此,您需要使用它附带的格式解析它。然后,您需要另一个具有输出目标格式的SimpleFormat。

所以,试试这个:

import java.text.SimpleDateFormat;

public class testDate {

    public void parseDate() {
        try {
            String testDate = "2015-06-19 00:00:00.000000";
            // not sure about the Millisecond part ... might be SSSSSS
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
            java.util.Date parsedDate = format1.parse(testDate);

            SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy");
            String ouput = format2.format(parsedDate)
            System.err.println(parsedDate);
        } 
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        testDate td = new testDate();
        td.parseDate();
    }
}