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

以特定格式显示Java.util.Date,java,date,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,因为日期需要排序为日期,而不是字符串 有什么想法吗?要将日期格式化为字符串,您需要仔细阅读 下面是一个从S

我有以下情况:

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,因为日期需要排序为日期,而不是字符串

有什么想法吗?

要将日期格式化为字符串,您需要仔细阅读

下面是一个从
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
//                            ^^^^^^

您已经有了这个(这就是您输入的)
parse
将日期解析为给定格式并打印完整的日期对象(
toString
)。

这没有意义,但是:

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

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

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

> 31/05/2011

使用SimpleDataFormat.format格式

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String sDate= sdf.format(date);
这对你有帮助。 DateFormat df=新的简化格式(“dd/MM/yyyy”);
打印(df.format(new Date());

如果只想输出日期,只需使用以下命令:

System.out.printf("Date: %1$te/%1$tm/%1$tY at %1$tH:%1$tM:%1$tS%n", new Date());
如图所示。或者,如果要将值转换为字符串(例如,对于SQL building),可以使用:

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

您还可以按照以下步骤自定义输出。

我有类似的想法,我的建议是使用java实现类似的功能,不要放入样板代码


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

SimpleDateFormat simpledatafo = new SimpleDateFormat("dd/MM/yyyy");
Date newDate = new Date();
String expectedDate= simpledatafo.format(newDate);
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));
此代码段的输出为:

2011年5月31日

看看你是否能接受两位数的年份。或者使用
FormatStyle.MEDIUM
获得
2011年5.月31日。我建议您尽可能使用Java内置的日期和时间格式。它更简单,并且非常适合国际化

如果您需要提供的确切格式,只需将源格式化程序也用作显示格式化程序:

    System.out.println(date.format(sourceFormatter));
2011年5月31日

我建议您不要使用
SimpleDateFormat
。这是出了名的麻烦和过时。相反,我使用java.time,现代java日期和时间API

要获取特定格式,需要将解析后的日期重新格式化为字符串。老式的
date
或现代的
LocalDate
都可以包含格式


链接:解释如何使用java.time。

我们可以添加Wiki/FAQ条目或文章用于日期解析/格式化和时区吗?看起来五分之一的java问题都与此主题有关……对于后来者:不要使用
date
,当然也不要使用
SimpleDateFormat
。使用
LocalDate
DateTimeFormatter
from。对每个人来说:你在问不可能的问题。
Date
没有格式,你不能改变它的
toString
方法的工作方式(现代的
LocalDate
),我不知道为什么这个答案会被接受。但它没有给出java.uti.Date.format类型的格式化日期()方法返回字符串。@RadhakrishnaGorenta,我不知道你的意思。没有“java.uti.date类型的格式化日期”这样的东西。日期只有在屏幕上输出或以其他方式序列化后才有“格式”。它们只是对象。这如何解决“将
util.Date
转换为
sql.Date
对象?@Ephemeral您在谈论哪个问题?没有任何关于sql.Date的参考。。。