繁体   English   中英

在DateTime.ParseExact上未将字符串识别为有效的DateTime

[英]String was not recognized as a valid DateTime on DateTime.ParseExact

我知道这里有很多有关DateTime问题,但我已经看到了所有这些内容,似乎找不到适合我情况的正确解决方案。

这是我的代码:

return DateTime.ParseExact(partialDate + dtfi.DateSeparator + _baseDate.ToString(), "dd/MM/yyyy", new CultureInfo("en-us");

这使我感到异常。

这是变量的值:

string partialDate = "1/22";
string dtfi.DateSeparator = "/";
int _baseDate = 2004;

您应该使用的格式"m/dd/yyyy"因为datestring成为1/22/2004

return DateTime.ParseExact(partialDate + dtfi.DateSeparator + _baseDate.ToString(), "m/dd/yyyy", new CultureInfo("en-us"));

不幸的是 ,两个答案都是错误的。

因此,我们都同意您的结果字符串将为"1/22/2004" 在查看哪种格式与您的字符完全匹配之前,让我们看一下您的字符串是否适用于en-US文化的标准日期和时间格式。

DateTime.Parse("1/22/2004",
               CultureInfo.GetCultureInfo("en-US")) // 22 January 2004 00:00:00

砰!

我们有一个完美的DateTime 但是,如果我们的字符串不是en-US文化的标准日期和时间格式,该怎么办? 然后,我们可以使用DateTime.TryParseExact方法指定格式。 让我们看一下可以用来解析字符串的格式。

因此, 正确的格式将是M/dd/yyyy

string s = "1/22/2004";
DateTime dt;
if(DateTime.TryParseExact(s, "M/dd/yyyy", CultureInfo.GetCultureInfo("en-US"),
                          DateTimeStyles.None, out dt))
{
    Console.WriteLine(dt); // 22 January 2004 00:00:00
}

您所指的格式错误,因此显然它将引发异常。 下面是你在做什么

string partialDate = "1/22";
string dtfi.DateSeparator = "/";
int _baseDate = 2004;

string ex = partialDate + dtfi.DateSeparator + _baseDate.ToString();

给您1/22/2014 ie, MM/dd/yyyy

在代码中,您指的是

return DateTime.ParseExact(partialDate + dtfi.DateSeparator + _baseDate.ToString(), "dd/MM/yyyy", new CultureInfo("en-us");

尝试使用正确的格式,以获得正确的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM