对于有效的DateTime(错误显示无法识别字符串)

本文关键字:显示 识别 字符串 错误 于有效 有效 DateTime | 更新日期: 2023-09-27 18:13:19

我正在尝试将字符串格式的值转换为dd/MM/yyyy格式的日期类型。它运行得很好,但当我在文本框中输入fromdate(dd/MM/yyyy(时,它很好,在文本框输入todate(dd/MM/yyyy(,它会给出一个错误,即字符串未被识别为有效的日期时间。我不知道到底出了什么问题。相同的代码在另一个应用程序上运行,运行良好,但在我的应用程序中显示错误。

下面我使用了数组作为所需的格式,也使用了拆分。

string fromdate = punchin.ToString();
string[] arrfromdate = fromdate.Split('/');
fromdate = arrfromdate[1].ToString() + "/" + arrfromdate[0].ToString() + "/" + arrfromdate[2].ToString();
DateTime d1 = DateTime.Parse(fromdate.ToString());

对于有效的DateTime(错误显示无法识别字符串)

尝试使用DateTime.TryParseExact,如下

DateTime date;
if (DateTime.TryParseExact(inputText, "MM/dd/yyyy",
                           CultureInfo.InvariantCulture,
                           DateTimeStyles.None,
                           out date))
{
   // Success
}

如果您知道输入日期时间的格式,就不需要进行任何字符串操作。但您需要提供正确的日期和时间格式字符串

我收到了2013年5月13日下午12:21:35从日期字符串

使用DateTime.TryParseExact,您不必基于/拆分字符串,然后从数组中获取前三项,而只需执行以下操作:

DateTime dt;
if (DateTime.TryParseExact("5/13/2013 12:21:35 PM",
                                  "M/d/yyyy hh:mm:ss tt",
                                  CultureInfo.InvariantCulture,
                                  DateTimeStyles.None,
                                  out dt))
{
    //date is fine
}

使用单个d和单个M,因为它可以容纳一位数和两位数的日/月部分您可以简单地传递punchin作为字符串参数,在字符串类型上调用ToString是多余的

尝试:

DateTime.ParseExact(fromdate, "MM/dd/yy", CultureInfo.InvariantCulture) 

显然,您可以重新格式化以上内容,并通过创建与正在解析的字符串相关的CultureInfo实例来使用不同的提供程序,还可以修改格式字符串以反映该区域性或容纳更多的日期部分