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

解决IndexOf返回-1问题,提取时间并格式化为指定日期字符串

解决路径时间提取与格式化问题

核心问题分析

你用IndexOf找png返回-1,大概率是因为路径混合了正斜杠和反斜杠,手动索引定位容易出错,不如直接用.NET的Path类处理文件路径更可靠。另外,时间字符串的提取和格式化可以通过字符串分割或正则配合DateTime类完成。

完整解决方案代码

string[] files = Directory.GetFiles(Directory.GetDirectories(savedGamesFolder)[i]);
// 1. 直接提取文件名,规避路径分隔符的干扰
string fileName = Path.GetFileName(files[1]);

// 2. 从文件名中拆分出时间片段:按下划线分割后取倒数第二个元素
string[] nameSegments = fileName.Split('_');
string timeRaw = nameSegments[nameSegments.Length - 2]; // 得到"2022-07-30_22-15-58"

// 3. 将字符串解析为DateTime对象
if (DateTime.TryParseExact(timeRaw, "yyyy-MM-dd_HH-mm-ss", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime saveDateTime))
{
    // 4. 格式化为指定的月/日/年 + 12小时制时间格式
    string formattedTime = saveDateTime.ToString("M/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);
    // 5. 赋值给Text组件
    levelBtnObj.transform.GetChild(0).GetComponent<Text>().text = formattedTime;
}
else
{
    // 解析失败时的兜底处理
    levelBtnObj.transform.GetChild(0).GetComponent<Text>().text = "未知时间";
}

关键步骤说明

  • 用Path类处理路径:Path.GetFileName直接提取文件名,完全规避了手动找索引的各种问题,不管路径里是正斜杠还是反斜杠都能正确处理。
  • 提取时间片段:通过Split('_')分割文件名,倒数第二个元素就是目标时间字符串,格式固定时这种方式比正则更简单高效。
  • 时间转换与格式化:TryParseExact指定精确格式解析字符串,避免自动解析出错;ToString用M/dd/yyyy hh:mm tt格式输出,其中:
    • M是单/两位月份(比如7或07)
    • dd是两位日期
    • yyyy是四位年份
    • hh是12小时制的小时(22点会转为10)
    • tt自动匹配AM/PM

灵活替代方案(正则提取)

如果文件名格式可能有变动,用正则匹配更稳妥:

Match timeMatch = Regex.Match(fileName, @"\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}");
if (timeMatch.Success)
{
    string timeRaw = timeMatch.Value;
    // 后续解析和格式化步骤同上
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:54:52