You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中将无横杠日期字符串转为带横杠格式的标准方法

在Java中转换日期字符串的标准方法

当然有标准实现啦!针对你这种把"20180101"转成"2018-01-01"的需求,Java提供了几种靠谱的方案,这里推荐两种最常用的:

1. 优先使用Java 8+的java.time日期时间API(推荐)

这是官方现在主推的日期处理方案,不仅能完成格式转换,还能自动校验日期的合法性(比如遇到"20180230"这种无效日期会直接抛出异常,避免后续bug)。代码示例如下:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateConversionDemo {
    public static void main(String[] args) {
        String originalStr = "20180101";
        
        // 定义输入的日期格式:yyyyMMdd(年4位+月2位+日2位)
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        // 将字符串解析为LocalDate对象
        LocalDate date = LocalDate.parse(originalStr, inputFormatter);
        
        // 定义输出的日期格式:yyyy-MM-dd
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // 格式化为目标字符串
        String formattedStr = date.format(outputFormatter);
        
        System.out.println(formattedStr); // 输出:2018-01-01
    }
}

2. 纯字符串拼接(仅适用于格式绝对确定的场景)

如果你能100%保证输入字符串的格式是yyyyMMdd且长度正确,也可以直接用String的substring方法做拼接,但这种方法不会校验日期的有效性,比如输入"20181301"(月份13)也会硬拼成"2018-13-01",所以只适合简单场景:

String originalStr = "20180101";
String formattedStr = originalStr.substring(0, 4) + "-" + 
                      originalStr.substring(4, 6) + "-" + 
                      originalStr.substring(6);
System.out.println(formattedStr); // 输出:2018-01-01

总结

如果是处理日期相关的转换,强烈推荐第一种java.time的方案,它既符合Java的标准规范,又能保证数据的合法性,是工业界的最佳实践。

内容的提问来源于stack exchange,提问作者Touqeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:56:28