如何在Java15中格式化字符串中的日期?
我在以字符串文本的定义格式显示日期时遇到问题 它会在应用程序运行后抛出一个错误,如下所示如何在Java15中格式化字符串中的日期?,java,string,date,format,java-15,Java,String,Date,Format,Java 15,我在以字符串文本的定义格式显示日期时遇到问题 它会在应用程序运行后抛出一个错误,如下所示 Exception in thread "main" java.util.IllegalFormatConversionException: Y != java.lang.String 我怎么解决呢 下面是我的代码片段,如下所示 String exampleFourText = """ &l
Exception in thread "main" java.util.IllegalFormatConversionException: Y != java.lang.String
我怎么解决呢
下面是我的代码片段,如下所示
String exampleFourText =
"""
<html>
<body>
<p> %s </p>
<p> %.1f </p>
<p> %d </p>
<p> %c </p>
<p> %1$tY-%1$tm-%1$td </p>
</body>
</html>
""";
exampleFourText = exampleFourText.formatted("Hello", 1234.6, 15 , 'y', new Date());
System.out.println(exampleFourText);
字符串示例FourText=
"""
%s
%1f
%d
%c
%1$tY-%1$tm-%1$td
""";
exampleFourText=exampleFourText.formatted(“Hello”,1234.6,15,'y',new Date());
System.out.println(例如FourText);
您对参数使用了错误的序号。它应该是%5
而不是%1
,因为new Date()
是第五个参数
import java.util.Date;
public class Main {
public static void main(String[] args) {
String exampleFourText = """
<html>
<body>
<p> %s </p>
<p> %.1f </p>
<p> %d </p>
<p> %c </p>
<p> %5$tY-%5$tm-%5$td </p>
</body>
</html>
""";
exampleFourText = exampleFourText.formatted("Hello", 1234.6, 15, 'y', new Date());
System.out.println(exampleFourText);
}
}
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
你好
1234.6
十五
y
2021-03-17
你好
1234.6
十五
y
2021-03-17
从了解有关现代日期时间API的更多信息
*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。
您对参数使用了错误的序号。它应该是
%5
而不是%1
,因为new Date()
是第五个参数
import java.util.Date;
public class Main {
public static void main(String[] args) {
String exampleFourText = """
<html>
<body>
<p> %s </p>
<p> %.1f </p>
<p> %d </p>
<p> %c </p>
<p> %5$tY-%5$tm-%5$td </p>
</body>
</html>
""";
exampleFourText = exampleFourText.formatted("Hello", 1234.6, 15, 'y', new Date());
System.out.println(exampleFourText);
}
}
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
输出:
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
<html>
<body>
<p> Hello </p>
<p> 1234.6 </p>
<p> 15 </p>
<p> y </p>
<p> 2021-03-17 </p>
</body>
</html>
你好
1234.6
十五
y
2021-03-17
你好
1234.6
十五
y
2021-03-17
从了解有关现代日期时间API的更多信息
*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。
格式化的
从哪里来?@fantaghrocco这是Java15的新功能。谢谢,我不知道it@Pshemo15已显示在%dI中,建议您不要使用Date
。那门课设计得很糟糕,而且早已过时。改为使用中的LocalDate
from。我没有检查过,但我打赌它也可以与格式化()
一起使用,所以你只需要将新日期()
更改为本地日期。现在(ZoneId.systemDefault())
。格式化的
来自哪里?@fantagirocco这是Java15的一个新功能。谢谢,不知道it@Pshemo15已显示在%dI中,建议您不要使用Date
。那门课设计得很糟糕,而且早已过时。改为使用中的LocalDate
from。我没有检查过,但我打赌它也适用于formatted()
,因此您只需将newdate()
更改为LocalDate.now(ZoneId.systemDefault())
。