如何在java中将String date转换为dd-MM-yyyy格式的Date格式

w80xi6nr  于 2023-06-20  发布在  Java
关注(0)|答案(4)|浏览(85)

我有字符串格式的日期,如Wed Jun 07 00:00:00 IST 2023,但我希望它在dd-mm-yyyy格式的日期类型只...我可以转换它,但它是在字符串类型转换,我想它应该转换成只有日期类型的dd-mm-yyyy格式。
我试过下面的代码,但它是字符串格式转换为星期三六07 00:00:00 IST 2023,但我希望输出应该是这样的东西
仅日期= 07-06-2023。
请帮帮我
我的代码片段是:

public static void main(String[] args) throws ParseException {
String dateOfBirht= "07-06-2023";
Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateOfBirht);
System.out.println(date);

如果你看到上面代码片段的输出是打印为Wed Jun 07 00:00:00 IST 2023,这不是我想要的答案。应该是07-06-2023仅限日期格式****既不是String也不是LocaleDate

wz8daaqr

wz8daaqr1#

在Java中,Java.util.Date类没有与之关联的特定格式。打印Date对象使用toString()方法提供的默认格式。
要以所需格式(dd-mm-yyyy)显示日期而不显示任何时间或时区信息,可以使用java.text.SimpleDateFormat类将日期格式化为字符串,然后将其解析回Date对象。

public static void main(String[] args) throws ParseException {
        String dateOfBirth = "07-06-2023";
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        Date date = dateFormat.parse(dateOfBirth);

        String formattedDate = dateFormat.format(date);
        System.out.println(formattedDate);
    }

请注意,java.util.Date类已经过时,建议使用Java8中引入的较新的java.timeAPI进行日期和时间操作。但是,如果您特别需要使用Date类,则上述方法将很好地工作。

sxissh06

sxissh062#

避免使用旧的日期类,因此:

String s = "Wed Jun 07 00:00:00 IST 2023";
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("eee MMM dd HH:mm:ss z uuuu", Locale.UK);
ZonedDateTime zdt = ZonedDateTime.parse(s, dtf1);
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("dd-MM-uuuu", Locale.UK);
String s2 = dtf2.format(zdt.toLocalDate());
System.out.println(s2);

任何日期类型,包括java.util.Date,本质上都是一个内部数字。像int一样,它们没有格式。

hlswsv35

hlswsv353#

从Java 8+开始,您确实应该利用java.time类来实现任何日期功能。
但是要回答你的问题,你需要使用java.text.SimpleDateFormat#format将旧的Date转换为你想要的任何格式:

public static void main(String[] args) throws ParseException {
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
    String dateOfBirth = "07-06-2023";
    Date date = simpleDateFormat.parse(dateOfBirth);

    System.out.println(simpleDateFormat.format(date));
}
i7uaboj4

i7uaboj44#

  • "...我希望它的格式为dd-mm-yyyy,只使用DATE类型。..."*

我不太明白你的问题。你已经有了 * Date * 值,在这里。

Date date = new SimpleDateFormat("dd-MM-yyyy").parse(dateOfBirht);
  • "...如果你看到上面代码片段的输出是打印为Wed Jun 07 00:00:00 IST 2023,这不是我想要的答案。应该是07-06-2023..."*

我相信你是在暗示 * Date * 对象不应该返回时间,因为你只解析了日期值。
事实并非如此。同样,它仍然是一个有效的日期;归零的时间字段在日期字段中不应起任何作用。
但是,您可以使用基本的 * String * 格式。
格式说明符可以在 * Formatter * 类JavaDoc中找到。

System.out.printf("%td-%1$tm-%1$tY", date);

输出量

07-06-2023

相关问题