如何将Java中的日期时间字符串转换为指定日期格式?
没问题,这事儿好办!我来给你两种靠谱的解决方案,分别适配不同版本的Java环境~
Java 8+ 推荐方案(线程安全,更简洁)
Java 8引入的新日期时间API(java.time包)是目前的首选,它解决了旧API的线程安全问题,用法也更清晰:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateConversionExample { public static void main(String[] args) { String sDate = "2018-01-17 00:00:00"; // 定义输入日期的格式 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 将字符串解析为LocalDateTime对象 LocalDateTime dateTime = LocalDateTime.parse(sDate, inputFormatter); // 定义目标输出格式 DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); // 格式化为想要的字符串 String formattedDate = dateTime.format(outputFormatter); System.out.println(formattedDate); // 输出结果:17-01-2018 } }
关键说明:
yyyy代表4位年份,MM是2位月份,dd是2位日期,HH:mm:ss对应时分秒;- 新API的
DateTimeFormatter和LocalDateTime都是线程安全的,适合在多线程场景下使用。
Java 7及以下 兼容方案
如果你的项目还在使用Java 7或更早版本,可以用传统的SimpleDateFormat来实现,但要注意它不是线程安全的,不要在多线程环境下共享同一个实例:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class OldDateConversionExample { public static void main(String[] args) throws ParseException { String sDate = "2018-01-17 00:00:00"; SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 解析字符串为Date对象 Date date = inputFormat.parse(sDate); SimpleDateFormat outputFormat = new SimpleDateFormat("dd-MM-yyyy"); // 格式化为目标字符串 String formattedDate = outputFormat.format(date); System.out.println(formattedDate); // 输出结果:17-01-2018 } }
注意事项:
- 如果需要在多线程中使用,建议每次使用都新建
SimpleDateFormat实例,或者通过ThreadLocal来保证线程安全。
内容的提问来源于stack exchange,提问作者user9228823
相关产品推荐
相关产品推荐

