将此字符串格式转换为有效的 DateTime?

Converting this string format to a valid DateTime?

有问题的字符串:"2003:12:14 12:01:44" (yyyy:MM:dd hh:mm:ss)

我如何才能将其转换为 C# 中的有效日期时间?我尝试了 Convert.ToDateTime(str),但无济于事。

Convert.ToDateTime 尝试将您的字符串解析为 CurrentCulture 设置的标准日期和时间格式。看起来这个字符串不是标准格式。

您可以使用 DateTime.ParseExact 指定自定义格式。

var dt = DateTime.ParseExact("2003:12:14 12:01:44", 
                             "yyyy:MM:dd hh:mm:ss", 
                             CultureInfo.InvariantCulture);

使用正确的 DateTime 格式并使用该格式提供 DateTime.ParseExact。请注意,由于您的 time 不显示 AM 或 PM,假设它使用 24 小时格式(使用大写 HH)可能比 12 小时 AM PM(不是 hh) 格式。以下代码应该有效:

string format = "yyyy:MM:dd HH:mm:ss"; //note: use HH not hh
var result = DateTime.ParseExact("2003:12:14 12:01:44", format, CultureInfo.InvariantCulture);

详细了解可用的 DateTime 格式 here (standard) and here(自定义)。