0

我无法将字符串转换为日期,我的字符串如 17/12/2012 为此编写的代码如下所示

public string Date_Convert(string dt1)
{
    string strdate = string.Empty;
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-GB");
    DateTime dt = Convert.ToDateTime(dt1);
    strdate = dt.Month.ToString() + "/" + dt.Day.ToString() + "/" + dt.Year.ToString();
    Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
    return strdate;
}

它在我的本地系统中运行良好。并且不在我的服务器(位于澳大利亚)中工作,当然我在上面的代码中尝试了不同的文化设置,

我在条件条件下的 sql 查询中使用此日期字符串。

请帮助我,它杀死了我一天的时间,并提前感谢。

4

3 回答 3

2

与其切换文化,不如做这样的事情:

public string Date_Convert(string dt1)
{
    DateTime dt = DateTime.ParseExact(dt1, "dd/MM/yyyy", new CultureInfo("en-GB"));
    return dt.ToString("d", new CultureInfo("en-US"));
}

另外:如果您在 SQL 查询中使用该值(并且假设您的查询适用于DATETIME字段,而不是NVARCHAR),您还应该考虑使用参数化查询将DateTime值传递给数据库以避免 SQL 注入。

例如:

DateTime value = DateTime.Parse(dt1, new CultureInfo("en-GB"));
using (SqlCommand cmd = new SqlCommand("SELECT ... FROM ... WHERE Date = @date", connection))
{
    cmd.Parameters.AddWithValue("@date", value);
    ...
}
于 2012-12-17T12:11:27.567 回答
1

尝试DateTime.ParseExact()它作为参数接收模式,因此对于您的情况,它将是“dd/MM/yyyy”

于 2012-12-17T12:07:02.573 回答
0

DataTime 的格式将取决于您的应用程序的当前文化。为了在您的应用程序中使用特定格式,您可以在部分的 web.config 文件中设置标记。在这种情况下,您无需编写代码将数据时间转换为正确的格式。默认情况下,所有日期都将设置为指定的格式。

http://forums.asp.net/t/1109183.aspx/1

更多信息

于 2012-12-17T12:11:32.123 回答