C# 未将字符串识别为桌面应用程序中的有效日期时间错误

C# 未将字符串识别为桌面应用程序中的有效日期时间错误,c#,cross-platform,desktop-application,datetimepicker,C#,Cross Platform,Desktop Application,Datetimepicker,我开发了一个与.net Framework 3.5兼容的应用程序,以便在其他应用程序中运行它的构建 内置应用程序的操作系统是Windows7 当我在Windows XP中运行构建时,以下代码会出现错误: dtBillDate.Text = ds.Tables[0].Rows[0]["Dt"].ToString(); 这里的dtBillDate是一个日期时间选择器控件 填充ds记录的SQL查询是: query = "Select M.BillNo,M.PartyName,M.Address,M

我开发了一个与.net Framework 3.5兼容的应用程序,以便在其他应用程序中运行它的构建

内置应用程序的操作系统是Windows7

当我在Windows XP中运行构建时,以下代码会出现错误:

dtBillDate.Text = ds.Tables[0].Rows[0]["Dt"].ToString(); 
这里的
dtBillDate
是一个日期时间选择器控件

填充
ds
记录的SQL查询是:

query = "Select M.BillNo,M.PartyName,M.Address,M.City,M.State,M.TaxType,
M.BillType,FORMAT(M.BillDt,'dd-mm-yyyy')as Dt,
M.CST,M.GST,M.TransportName,M.TruckNo,M.Through,M.Tax,M.AddTax,M.Charges from BillMaster M where M.BillNo=" + billNo;
记录存储在Access 2007数据库中

我应该做些什么改变来解决这个错误


请帮忙。提前感谢。

您正在设置查询中的日期格式

FORMAT(M.BillDt,'dd-mm-yyyy')as Dt
在您的格式中,
mm
应该
mm
,因为您可能需要的是月份,而不是分钟

您应该使用格式
dd-MM-yyyy
来解析日期。不过,如果让查询返回DateTime而不进行格式化,并让.Net应用程序格式化日期以便显示,则会更好

您需要设置
DateTimePicker
控制值来显示日期。您可以使用
DateTime.ParseExact
进行如下解析:

dtBillDate.Value = DateTime.ParseExact(ds.Tables[0].Rows[0]["Dt"].ToString(), 
                                       "dd-MM-yyyy", 
                                       CultureInfo.InvariantCulture);
试试这个:

DateTime dateTime;
string dateString = ds.Tables[0].Rows[0]["Dt"].ToString();
bool result = DateTime.TryParse(dateString , out dateTime);

if(result)
{
     // Use `dateTime` variable then
}
在Win7中,基本上可以使用“English INDIA”格式,其中日期分隔符为“-”。但在Win XP中,“English India”格式不可用,因此您可能使用“English US或UK”格式表示日期,并使用“/”作为日期分隔符

为了解决您的问题,您所要做的就是在win xp机器中通过进入>控制面板>区域和语言选项>单击“自定义”>打开“日期”选项卡,并在此处将日期分隔符设置为“-”,将日期分隔符格式更改为“-”。
您的应用程序将不会出现任何错误。Happy Now:D

谢谢您的回答,先生,我尝试了您建议的代码,但仍然出现相同的错误@抱歉,它在编译时不会给出错误。错误是@Habib@RiyazKalva,您是否将查询更改为格式为
MM
(大写
MM
)是的,先生,它是相同的。。。我的代码行是:
dtBillDate.Value=DateTime.ParseExact(ds.Tables[0]。行[0][“BillDt”].ToString(),“dd-MM-yyyy”,CultureInfo.InvariantCulture)
@RiyazKalva,放一个断点,看看在
ds.Tables[0].Rows[0][“BillDt”].ToString()中得到了什么