c# - 字符串未被识别为有效的日期时间?

标签 c# asp.net string datetime cultureinfo

我尝试将字符串转换为 datetime 但每次我得到:

String was not recognized as a valid DateTime.

代码是:

string format = "dd/MM/yyyy";

obj.TransDate = DateTime.ParseExact(lbl_TransDate.Text.Split('/')[0] + "/" + lbl_TransDate.Text.Split('/')[1] + "/" + lbl_TransDate.Text.Split('/')[2], format, CultureInfo.InvariantCulture);

当我调试我尝试解析的日期时:12/4/2012

最佳答案

所需的格式是

string format = "dd/M/yyyy";

虽然我不明白,为什么要拆分和连接字符串,因为你会得到同样的东西?

如果输入是 12/4/2012,用 '/' 拆分后,您将得到 12, 4, 2012 然后将它们连接回获得“12/4/2012”。为什么会这样?

另外,如果你真的需要拆分,你可以存储到一个数组中,这样你就不需要将它拆分 3 次:

var splits = lbl_TransDate.Text.Split('/');
DateTime.ParseExact(splits[0] + "/" + splits[1] + "/" + splits[2], ...);

如果您不信任输入,splits 数组的 Length 可能不等于 3,如果长度大于 3,您可以使用 DateTime.TryParseExact

编辑 您可以使用多种格式的重载 因此,如果输入可能是 12/4/2012 或 12/04/2012,您可以同时提供这两种格式

var formats = new[] {"dd/M/yyyy","dd/MM/yyyy"};
var date = DateTime.ParseExact("12/4/2012", formats, 
                                        System.Globalization.CultureInfo.InvariantCulture,
                                        System.Globalization.DateTimeStyles.AssumeLocal);

关于c# - 字符串未被识别为有效的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123145/

相关文章:

c# - LVM_GETCOLUMN 只返回第一列的信息

c# - 如何告诉 Pex 不要 stub 具有具体实现的抽象类

Javascript提取字符串中的未知数字

objective-c - 在 Objective-C 中定义一个全局可访问的字符串

javascript - 如何在javascript中一次用其他多个字符串替换多个字符串?

c# - 需要从 C# 中的字符串中提取字段

c# - 在 Workflow Foundation 中处理多个状态下的同一事件

c# - 在 C# 中引发事件

jquery - 如何建立分辨率独立的网站?

c# - ASP.NET 应用程序可以作为本地主机访问,但不能通过 127.0.0.1 访问