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

C#拼接CSV日期与秒数生成含毫秒DateTime对象报错咨询

问题分析与解决方案

首先直接给出结论:你想要的「直接拼接成03-10-2022 15:20:1200.34格式后转换为DateTime」不可行,核心原因有两点:

  • DateTime类型的秒分量合法范围是0-59,你拼接后的字符串里秒部分是1200,远超有效值范围,ParseExact无法识别
  • 你的格式字符串用了MM/dd/yyyy(斜杠分隔),但实际DATETIME列是03-10-2022(横杠分隔),格式规则不匹配

正确的处理方式是分开解析两列数据后再合并:

  1. 先将DATETIME列解析为基础DateTime对象
  2. 将SECONDS列解析为总秒数(包含小数部分的毫秒),通过AddSeconds方法把秒数叠加到基础DateTime上

示例代码

// 解析基础日期时间(注意格式与原数据的横杠分隔匹配)
string d0 = csv.GetField<string>("DATETIME");
DateTime baseDt = DateTime.ParseExact(d0, "MM-dd-yyyy HH:mm", CultureInfo.InvariantCulture);

// 解析总秒数并叠加到基础时间
string d5 = csv.GetField<string>("SECONDS");
if (double.TryParse(d5, out double totalSeconds))
{
    DateTime finalDt = baseDt.AddSeconds(totalSeconds);
    // finalDt即为包含毫秒的目标DateTime对象
}
else
{
    // 处理SECONDS列解析失败的异常场景
}

补充说明

如果硬要尝试拼接后解析,需要先把总秒数转换成「秒.毫秒」的合法格式(比如1200.34秒 = 20分00秒340毫秒),但这种做法冗余且容易出错,远不如直接使用AddSeconds高效可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:25:28