Datetime 从大字符串中提取日期

Datetime 从大字符串中提取日期,datetime,Datetime,我有类似dhgsf20101211124422asddas的字符串。 此字符串包含YYYYMMDDHMMSS格式的日期。 如何从上面的长字符串中获取该日期。 提前感谢。 假设它是java。正则表达式应该能够抓取可能的子字符串-然后一些合理的逻辑来测试日期的任何其他有效性我会使用正则表达式。假设它总是一个14位的数字,并且字符串中没有任何其他精确的14位长的数字,这将很容易做到 有很多工具可以帮助您构建正则表达式,我通常使用这些工具,即使不太了解正则表达式的工作原理,也可以使其变得简单。我会使用J

我有类似dhgsf20101211124422asddas的字符串。 此字符串包含YYYYMMDDHMMSS格式的日期。 如何从上面的长字符串中获取该日期。 提前感谢


假设它是java。

正则表达式应该能够抓取可能的子字符串-然后一些合理的逻辑来测试日期的任何其他有效性

我会使用正则表达式。假设它总是一个14位的数字,并且字符串中没有任何其他精确的14位长的数字,这将很容易做到


有很多工具可以帮助您构建正则表达式,我通常使用这些工具,即使不太了解正则表达式的工作原理,也可以使其变得简单。

我会使用Java的
DateFormat
解析。它允许您使用
ParsePosition
对象遍历字符串

DateFormat format = new SimpleDateFormat("yyyymmddhhmmss");
ParsePosition pp = new ParsePosition(0);
for (int c = 0; c < text.length(); c++) {
    pp.setIndex(c); pp.setErrorIndex(-1);
    Date d = format.parse(text, pp);

    if (d != null) {
        // Handle parsed date

        // Only advance past the last parsed date if there was no error
        if (pp.getErrorIndex() < 0) c = pp.getIndex() - 1;
    }
}
DateFormat format=新的SimpleDataFormat(“yyyymmddhhmmss”);
ParsePosition pp=新的ParsePosition(0);
对于(int c=0;c
我不认为扫描器有日期。