我正在使用下面的代码

    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/

10-11 22:11
查看更多