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

如何检测并提取图片文件名中的特定格式DateTime子串?

从文件名中提取日期时间子串并转为DateTime对象

核心思路

用正则表达式匹配文件名中符合要求的日期时间子串,再针对不同格式调用TryParseExact转换为DateTime对象。以下是具体实现(以C#为例):

正则表达式编写

针对你提到的三种格式,合并后的正则表达式可一次性匹配任意一种:

\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}|\d{8}_\d{6}|\d{8}

各部分含义:

  • \d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}:匹配YYYY-MM-DD-HH-MM-SS格式
  • \d{8}_\d{6}:匹配YYYYMMDD_HHMMSS格式
  • \d{8}:匹配YYYYMMDD格式
  • |:逻辑或,满足任意一种格式即可被匹配

完整代码示例

using System;
using System.IO;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        // 目标文件夹路径
        string folderPath = @"C:\YourImageFolder";
        // 匹配三种日期格式的正则表达式
        string datePattern = @"\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}|\d{8}_\d{6}|\d{8}";
        // 对应三种格式的DateTime格式字符串
        string[] dateFormats = {
            "yyyy-MM-dd-HH-mm-ss",
            "yyyyMMdd_HHmmss",
            "yyyyMMdd"
        };

        // 遍历文件夹中的所有图片文件(可按需调整扩展名)
        foreach (string filePath in Directory.GetFiles(folderPath, "*.*", SearchOption.TopDirectoryOnly))
        {
            string fileName = Path.GetFileName(filePath);
            // 匹配文件名中的日期子串
            Match match = Regex.Match(fileName, datePattern);
            if (match.Success)
            {
                string dateStr = match.Value;
                // 尝试转换为DateTime对象
                if (DateTime.TryParseExact(dateStr, dateFormats, null, System.Globalization.DateTimeStyles.None, out DateTime dateTime))
                {
                    Console.WriteLine($"文件名:{fileName},提取到的日期时间:{dateTime}");
                    // 此处可添加业务逻辑,比如保存日期时间、修改文件属性等
                }
                else
                {
                    Console.WriteLine($"文件名:{fileName},匹配到的子串{dateStr}无法转换为DateTime");
                }
            }
            else
            {
                Console.WriteLine($"文件名:{fileName},未找到符合格式的日期子串");
            }
        }
    }
}

关键说明

  1. 正则匹配:Regex.Match返回文件名中第一个符合格式的子串,若文件名可能存在多个符合条件的子串,可改用Regex.Matches遍历所有匹配结果。
  2. 格式对应:dateFormats数组顺序可根据实际出现频率调整,TryParseExact会按顺序尝试转换,匹配到第一个合适格式即停止。
  3. 文件遍历:Directory.GetFiles的第二个参数可指定图片扩展名,比如"*.jpg;*.png"来仅处理图片文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:02:42