2012-12-17 24 views
0

我无法字符串转换为日期,我的字符串像这样写17/12/2012 代码如下无法字符串转换为日期在asp.net正确

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查询。

请帮帮我,它杀了我唯一一天的时间,并在此先感谢。

+5

使用SQL参数来避免SQL注入和类似这样的问题。 _“我使用的是在状态。 在SQL查询这个日期字符串” _ –

+0

任何错误信息显示? – Boomer

+1

你是否有任何异常,错误?因为当前的日期代码'十二分之十七/ 2012'应该只是罚款 – Habib

回答

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); 
    ... 
} 
+0

这段代码也不适用于我 –

+0

你是什么意思*不工作* - 你使用转换后的日期作为查询参数时得到一个异常的'Date_Convert'功能或更高版本?异常文本*错误将数据类型nvarchar转换为日期时间*您在您的问题的评论中提供的建议是,您将查询中的参数视为字符串,而不是实际使用'datetime'类型的参数。你是否调用一个将日期作为'nvarchar'的存储过程?如果是这样,请将该参数更改为'datetime'并使用我提供的代码。 –

+0

我收到两个例外,如上所述“字符串未被识别为有效的日期时间”和“将数据类型nvarchar转换为日期时间错误。 –

1

尝试DateTime.ParseExact()接收模式作为参数,以便为您的情况下,这将是“DD/MM/YYYY”

+0

当前代码日期'17/12/2012'应该工作正常 – Habib

+0

当使用此我从数据库中得到一个异常,例如“将数据类型nvarchar转换为日期时间”并且重要的是,它在我的本地系统中正常工作 –

0

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

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

More Info

+0

请详细解释,实际上我没有在web.config中使用任何与文化相关的标记,所以我在函数中提到了它它自我。 –