以下代码抛出错误'字符串未被识别为有效日期时间'。
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "dd-MM-yyyy HH:mm:ss";
DateTime.ParseExact(text, timeFormat, null);
如何将该文本字段转换为DateTime?
我将日期时间字符串分配给变量只是为了澄清。在我的场景中,日期字符串来自datetimepicker控件。
答案 0 :(得分:4)
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/d/yyyy h:mm:ss tt";
DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
注意:将null
传递给ParseExact
会使解析器获取当前的文化,这可能在不同的环境中有所不同。如果您有严格的格式,请传递CultureInfo.InvariantCulture
,从而使解析器在所有环境中的行为相同
单{{}}}适用于日期为零填充的日期,以及d
和M
答案 1 :(得分:3)
我认为您需要以下格式字符串:"M/dd/yyyy h:mm:ss tt"
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/dd/yyyy h:mm:ss tt";
DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
为我跑。请注意,dd
可能是d
,具体取决于您的日期是否为零填充。
答案 2 :(得分:3)
来自 MSDN ;
字符串表示形式的格式必须与指定的格式匹配 格式正确。
试试这个;
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/d/yyyy h:mm:ss tt";
DateTime date = DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
Console.WriteLine(date);
这是DEMO
。
答案 3 :(得分:2)
试试这个:
string timeFormat = "M/d/yyyy h:mm:ss tt";
DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
答案 4 :(得分:1)
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/dd/yyyy h:mm:ss tt";
DateTime date = DateTime.ParseExact(text, timeFormat, CultureInfo.InvariantCulture);
答案 5 :(得分:1)
为什么要这么难?
string text = "5/17/2013 8:08:48 PM";
DateTime dt = DateTime.Parse(text);
//dt = {2013-05-17 20:08:48}
答案 6 :(得分:0)
问题是您缺少“PM”(tt)的格式;它应该是:
try{
string text = "5/17/2013 8:08:48 PM";
string timeFormat = "M/dd/yyyy HH:mm:ss tt";
DateTime.ParseExact(text,timeFormat,null);
} catch (FormatException) { ... }
请注意,使用此方法时应始终处理此异常。