Java 使用简单日期格式格式化时日期无效

Java 使用简单日期格式格式化时日期无效,java,date,datetime,simpledateformat,sqldatetime,Java,Date,Datetime,Simpledateformat,Sqldatetime,我有一个日期字符串Mon Feb 8 00:00:00 UTC+0530 1954。我想将其转换为DD/MM/YYYY格式。输出总是08/38/1954或09/39/1954 我使用了以下代码 SimpleDateFormat format = new SimpleDateFormat("MM/DD/YYYY", Locale.US); System.out.println(format.format(new Date(dateStr))); DD中的SimpleDateFormat表示“年中

我有一个日期字符串
Mon Feb 8 00:00:00 UTC+0530 1954
。我想将其转换为
DD/MM/YYYY
格式。输出总是
08/38/1954或09/39/1954

我使用了以下代码

SimpleDateFormat format = new SimpleDateFormat("MM/DD/YYYY", Locale.US);
System.out.println(format.format(new Date(dateStr)));

DD
中的
SimpleDateFormat
表示“年中的一天”,您需要“月中的一天”,即
DD

还要注意的是,
YYYY
表示“周-年”,根据日历的不同,周-年可追溯到“年”,表示为
yyy
。我想,无论如何,您都需要
yyyy

您需要使用parse()方法从字符串日期转换为定义的SimpleDataFormat

 SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
 Date date = format.parse(dateStr);
 System.out.println(format.format(date));

D
SimpleDateformat
中代表
年中的天
其中as
D
代表月中的天因此将
DD
替换为
DD

类似地,将
YYYY
替换为
yyy

尝试以下操作:

SimpleDateFormat frmt = new SimpleDateFormat("E MMM d HH:mm:ss zZ yyyy", Locale.US);
Date dateStr = frmt.parse("Mon Feb 8 00:00:00 UTC+0530 1954");

这将以给定格式输出当前日期。他特别想要输出给定的日期,这需要首先解析。他有一个非常特定的输入字符串,您的将尝试将其与格式模式匹配。通过使用上面的代码,我得到了解析异常。但是当我创建新的日期对象和格式时,我得到了正确的输出。为什么会出现语法分析器异常,如代码示例中的“月初”?或者是第一天,就像问题主体的第二句话一样?我的答案可能是重复的,这真的是不必要的,但我喜欢用一些正则表达式来解决这类问题。这就像是重新设计车轮。