我正在使用下面的代码
DateTime dtt=new DateTime();
dtt = Convert.ToDateTime(FromDate);
// DateTime dtt = DateTime.Parse(FromDate); //this also gives the same error
con = new MySqlConnection(conString);
con.Open();
for (int i = 1; i <= TotalDays; i++)
{
string updateHotelBooking = "Update tbl_hotelbookingdetail set `BookedRoom`=`BookedRoom`+"+1+", `AvailableRoom`=`TotalRoom`-`BookedRoom` where `HotelID`="+HotelID+" AND `CurrentDate`='"+dtt.ToString("dd-MM-yyyy")+"'";
MySqlCommand cmd7=new MySqlCommand(updateHotelBooking,con);
cmd7.ExecuteNonQuery();
dtt = dtt.AddDays(1);
}
此代码位于我用于 iPhone 应用程序的 Web 服务之一中。
这里
FromDate
是字符串,在这个格式 15-11-2011
中具有值,它以字符串格式来自应用程序。我将它转换为 DateTime 因为在总天数的循环中I need to add day to dtt.
它在具有 dtt 值
15-11-2011 00:00:00
的本地主机上运行良好但是当我发布它时,它给出了错误
String was not recognize as valid DateTime
最佳答案
这几乎可以肯定是因为您的服务器默认使用不同的文化 - 而您的代码只是使用当前的线程文化。
您可以使用 DateTime.Parse
指定它 - 或者使用 DateTime.ParseExact
或 DateTime.TryParseExact
显式指定模式 - 但我们需要更多地了解字符串的来源以建议最佳方法。是来自用户吗?如果是这样,您应该使用用户的文化来解析它。它是一种特定的格式(例如来自 XML 文档)吗?如果是这样,请使用该特定格式进行解析。
理想情况下,完全摆脱字符串部分 - 例如,如果您从数据库中获取它,是否可以存储它并将其作为 DateTime
而不是字符串获取?尽可能减少所涉及的字符串转换次数是值得的。
编辑:要从 dd-MM-yyyy 的固定格式解析,我会使用:
DateTime value;
if (DateTime.TryParseExact(text, "dd-MM-yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.AssumeUniversal,
out value))
{
// Value will now be midnight UTC on the given date
}
else
{
// Parsing failed - invalid data
}
关于c# - 发布到 Web 服务器后将字符串转换为 DateTime 时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8179124/