以特定格式显示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的参考。。。