字符串到日期解析错误“字符串未被识别为有效的DateTime”。

时间:2014-04-22 06:57:31

标签: c# .net string datetime

在我的属性下面,我将字符串解析为datetime。

public virtual string StartTimeLocal
{
    set { StartTime = DateTime.Parse(value).ToUTCDateTime(); }
}

刚刚签入,我有26/1/2014 02:17 PM

你能帮我解决一下我做错了什么以及如何纠正它吗?

3 个答案:

答案 0 :(得分:4)

DateTime.Parse设置标准日期和时间格式你的字符串不是其中之一。

您可以改用DateTime.TryParseExactDateTime.ParseExact方法。

string s = "26/1/2014 02:17 PM";
DateTime dt;
if(DateTime.TryParseExact(s, "dd/M/yyyy hh:mm tt", 
                          CultureInfo.GetCultureInfo("en-US"), 
                          DateTimeStyles.None, out dt))
{
   Console.WriteLine(dt);
}
else
{
   //Your string is not a valid DateTime.
}

答案 1 :(得分:3)

您的输入使用en-US文化设置进行格式化,因此您应确保您的应用程序在本地文化设置为en-US的系统上运行或明确指定文化:

public virtual string StartTimeLocal
{
    set { StartTime = DateTime.Parse(value, CultureInfo.GetCultureInfo("en-US")).ToUTCDateTime(); }
}

答案 2 :(得分:2)

尝试以下方法:

CultureInfo provider = CultureInfo.InvariantCulture;
format = "dd/MM/yyyy hh:mm tt";
result = DateTime.ParseExact(dateString, format, provider);