Java中如何将字符串日期转为dd-MM-yyyy格式的Date类型
问题解决:Date类型格式转换误区与正确实现
核心误区说明
- Date类型本身不存储格式:
java.util.Date本质是封装时间戳的对象,没有“格式”属性。直接打印Date对象时,调用的是默认toString()方法,会输出Wed Jun 07 00:00:00 IST 2023这类固定格式,和你期望的dd-MM-yyyy无关。 - 你实际需要的是:先将输入的特定格式字符串解析为
Date对象,再将该对象以dd-MM-yyyy格式输出为字符串——不存在“格式为dd-MM-yyyy的Date类型”这种说法。
正确实现步骤
- 按输入字符串的格式(
Wed Jun 07 00:00:00 IST 2023对应的格式规则),将其解析为Date对象 - 使用格式化工具将
Date对象转换为dd-MM-yyyy格式的字符串
修正后的代码示例
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; public class DateConversion { public static void main(String[] args) throws ParseException { // 输入的日期字符串 String inputDateStr = "Wed Jun 07 00:00:00 IST 2023"; // 1. 解析字符串为Date对象,格式需严格匹配输入结构 SimpleDateFormat inputFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH); Date date = inputFormatter.parse(inputDateStr); // 2. 将Date对象格式化为dd-MM-yyyy格式的字符串 SimpleDateFormat outputFormatter = new SimpleDateFormat("dd-MM-yyyy"); String formattedDate = outputFormatter.format(date); // 输出结果 System.out.println(formattedDate); // 输出:07-06-2023 } }
关键细节
- 解析时的格式字符串
"EEE MMM dd HH:mm:ss zzz yyyy"必须与输入字符串完全对应:EEE:英文星期缩写(如Wed)MMM:英文月份缩写(如Jun)dd:两位日期HH:mm:ss:时分秒zzz:时区标识(如IST)yyyy:四位年份
- 显式设置
Locale.ENGLISH是为了避免因系统语言环境不同导致的解析失败。
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

