以特定格式显示Java.util.Date

时间:2011-06-07 08:06:17

标签: java date

我有以下情况:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.parse("31/05/2011"));

给出输出

Tue May 31 00:00:00 SGT 2011

但我希望输出为

31/05/2011 

我需要在这里使用parse,因为日期需要按日期排序,而不是字符串。

任何想法??

10 个答案:

答案 0 :(得分:70)

怎么样:

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")));

> 31/05/2011

答案 1 :(得分:52)

您需要浏览SimpleDateFormat.format才能将日期格式化为字符串。

以下是来自String - >的示例Date - > String

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = dateFormat.parse("31/05/2011");

System.out.println(dateFormat.format(date));   // prints 31/05/2011
//                            ^^^^^^

答案 2 :(得分:15)

使用SimpleDateFormat.format

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);

答案 3 :(得分:6)

您可以使用以下代码在Java中使用简单的日期格式

SimpleDateFormat simpledatafo = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = new Date();
String expectedDate= simpledatafo.format(newDate);

答案 4 :(得分:4)

没有意义,但是:

System.out.println(dateFormat.format(dateFormat.parse("31/05/2011")))

SimpleDateFormat.parse() = // parse Date from String
SimpleDateFormat.format() = // format Date into String

答案 5 :(得分:3)

如果您只想输出日期,只需使用以下内容:

System.out.printf("Date: %1$te/%1$tm/%1$tY at %1$tH:%1$tM:%1$tS%n", new Date());

here。或者,如果要将值转换为String(例如,对于SQL构建),可以使用:

String formattedDate = String.format("%1$te/%1$tm/%1$tY", new Date());

您还可以按照Java API on Date/Time conversions

自定义输出

答案 6 :(得分:1)

您已经拥有此功能(这是您输入的内容)parse会将日期解析为给定格式并打印完整日期对象(toString)。

答案 7 :(得分:1)

java.time

这是现代的答案。

    DateTimeFormatter sourceFormatter = DateTimeFormatter.ofPattern("dd/MM/uuuu");
    DateTimeFormatter displayFormatter = DateTimeFormatter
            .ofLocalizedDate(FormatStyle.SHORT)
            .withLocale(Locale.forLanguageTag("zh-SG"));

    String dateString = "31/05/2011";
    LocalDate date = LocalDate.parse(dateString, sourceFormatter);
    System.out.println(date.format(displayFormatter));

此代码段的输出为:

  

11/05/31

查看您是否可以接受两位数的年份。或使用FormatStyle.MEDIUM获得2011年5月31日。我建议您尽可能使用Java内置的日期和时间格式。它更容易实现国际化。

如果您需要给定的确切格式,也可以将源格式器也用作显示格式器:

    System.out.println(date.format(sourceFormatter));
  

31/05/2011

我建议您不要使用SimpleDateFormat。众所周知,这很麻烦,而且已经过时了。取而代之的是,我使用现代的Java日期和时间API java.time。

要获取特定格式,您需要将解析后的日期重新格式化为字符串。不管是老式的Date还是现代的LocalDate都可以使用其中的格式。

链接: Oracle tutorial: Date Time解释了如何使用java.time。

答案 8 :(得分:0)

这会对你有所帮助。 DateFormat df = new SimpleDateFormat(“dd / MM / yyyy”); print(df.format(new Date());

答案 9 :(得分:0)

我有这样的东西,我的建议是使用java这样的东西,不要输入样板代码

BasicImplementation