0

我正在尝试将我的字符串格式化值转换为格式为 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());
4

3 回答 3

2

尝试DateTime.TryParseExact如下

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

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

于 2013-05-13T07:21:05.113 回答
0

我在字符串 fromdate 中得到了 5/13/2013 12:21:35 PM

使用DateTime.TryParseExac t,您不必基于拆分字符串/然后从数组中获取前三个项目,而是可以简单地执行以下操作:

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
}

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

于 2013-05-13T07:24:44.030 回答
0

尝试 :

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

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

于 2013-05-13T07:22:41.307 回答