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

Java如何查找字符串中YYYY-MM-DD HH:MM:SS格式日期的首个索引

实现方案

你的思路完全可行,以下是可直接运行的Java实现:

方案1:按索引截取(推荐,更符合你设想的逻辑)

首先构造匹配YYYY-MM-DD HH:MM:SS格式的正则,匹配到第一个符合规则的时间戳的起始索引后直接截取:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DateExtractTest {
    public static void main(String[] args) {
        String JAVA_STACK_TRACE = "ABC-007: This is a dummy ABC error message. This message can have multiple sentences." + " 2021-09-24 19:12:50,672 Exception in thread \"main\" java.lang.RuntimeException: A test exception" + "  at com.stackify.stacktrace.StackTraceExample.methodB(StackTraceExample.java:13)" + "  at com.stackify.stacktrace.StackTraceExample.methodA(StackTraceExample.java:9)" + "  at com.stackify.stacktrace.StackTraceExample.main(StackTraceExample.java:5)";
        
        // 匹配YYYY-MM-DD HH:MM:SS格式的正则
        Pattern datePattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}");
        Matcher matcher = datePattern.matcher(JAVA_STACK_TRACE);
        
        if (matcher.find()) {
            // 截取从0到第一个日期起始索引的内容,trim掉首尾空白
            String targetContent = JAVA_STACK_TRACE.substring(0, matcher.start()).trim();
            System.out.println(targetContent);
        }
    }
}

运行后输出结果为:ABC-007: This is a dummy ABC error message. This message can have multiple sentences.

方案2:字符串分割简化实现

如果不需要精确控制索引,可以直接用正则作为分割符,取分割后的第一个元素即可:

String[] splitResult = JAVA_STACK_TRACE.split("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", 2);
if (splitResult.length > 0) {
    String targetContent = splitResult[0].trim();
    System.out.println(targetContent);
}

注意:如果你的错误信息本身可能包含类似YYYY-MM-DD HH:MM:SS格式的内容,需要调整正则规则加更严格的边界匹配,比如确保日期前面是空白字符,可以把正则改成\\s\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:57:01