字符串未被识别为有效的日期时间
本文关键字:日期 时间 有效 识别 字符串 | 更新日期: 2023-09-27 18:04:17
这是我在这里的第一篇文章。应用程序是一个winform,我已将应用程序的区域性设置为en-GB,但在检查和保存时,我将其转换回en-US,我得到这个错误字符串未被识别为有效的日期时间
CultureInfo currentCulture = new CultureInfo("en-US");
string strCheckDate = CheckConvertCulture(input);
string date = DateTime.Now.ToString("M/d/yyyy");
if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null)> DateTime.ParseExact(date,currentCulture.ToString(),null))
{
return false;
}
else
{
return true;
}
我哪里做错了
这是我的converCurrentCulture代码
string strdate = string.Empty;
CultureInfo currentCulture = CultureInfo.CurrentCulture;
System.Globalization.DateTimeFormatInfo usDtfi = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat;
if (currentCulture.ToString() != "en-US")
{
strdate = Convert.ToDateTime(Culturedate).ToString(usDtfi.ShortDatePattern);
}
else
{
strdate = Culturedate;
}
return strdate;
这是我所做的工作,但如果用户选择一个无效的日期,如29/02/2013,它会工作不确定,
CultureInfo currentCulture = new CultureInfo("en-GB");
string date = DateTime.Now.ToString("dd/MM/yyyy", currentCulture);
由于应用程序默认为en-GB
if (DateTime.Parse(input) > DateTime.Parse(date))
{
return false;
}
else
{
return true;
}
如果这实际上是您的代码:
CultureInfo currentCulture = new CultureInfo("en-US");
string strCheckDate = CheckConvertCulture(input);
if (DateTime.ParseExact(strCheckDate,currentCulture.ToString(),null)
那么问题出在你的ParseExact上,它转换成
if (DateTime.ParseExact(strCheckDate, "en-US", null))
您最好以特定的格式指定日期,并进行解析:
string format = "MM/dd/yyyy HH:mm:ss";
string strCheckDate = input.ToString(format);
// See note below about "why are you doing this?
if (DateTime.ParseExact(strCheckDate, format))
我最大的问题是——你为什么要这样做?如果您有两个日期,为什么要将它们都转换为字符串,然后再将它们转换回日期以进行比较?
return (input > date);
请参阅MSDN文档了解DateTime.ParseExact的正确使用。