2013-03-22 189 views
0

我有一個JQuery日期選擇器,將日期放入格式爲DD/MM/YYYY的文本框中。轉換英國日期格式爲美國

我想在SQL Server 2008中存儲這需要接受日期爲MM/DD/YYYY,我應該如何格式化日期以使其正常工作?

這是對我的參數添加到查詢,這會導致一個錯誤的日期和月份的代碼是南轅北轍

TextBox fixtureDateTextBox = (TextBox)Master.FindControl("ContentPlaceHolderMenu").FindControl("datepicker"); 
SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", fixtureDateTextBox.Text); 
+0

檢查了這一點,應該是你在找什麼。 http://stackoverflow.com/a/15547264/2171266 – 2013-03-22 17:35:51

+1

Matt使用'SqlParameters.AddWithValue()'方法使用與SqlParameter相反的方法也會將值作爲變量傳遞給您的參數,而不是清晰或硬編碼的文本'Avoind SQL注射' – MethodMan 2013-03-22 17:37:07

回答

4

永遠,不斷直接插入文本輸入到一個參數如你所做 - 這是造成太多安全漏洞的根源。通過調用DateTimeOffset.Parse(...),首先將輸入解析爲DateTimeOffset對象(也可以使用DateTime,但偏移量通常更好),然後只需將其添加爲參數而不進行修改即可。

編輯:我重新讀你的問題,並意識到,雖然上面沒有錯,但它確實錯過了一些重要的事情,解決你的問題。見this對於如何配置日期選取器從它的備用字段存儲顯示備用日期格式:

編輯2: 你想用它允許您通過在過載解析您的DateTime對象一個IFormatProvider實例。 請參閱http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx瞭解如何執行您想要執行的操作的示例。否則,DateTime.Parse('13/3/2013')將因無法識別的格式而失敗。

DateTime.Parse('13/3/2013', new CultureInfo("en-GB").DateTimeFormat)是你想用輸入框做什麼。

0

試試這個:

TextBox fixtureDateTextBox = (TextBox)Master.FindControl("ContentPlaceHolderMenu").FindControl("datepicker"); 
DateTime date = DateTime.Parse(fixtureDateTextBox.Text); 
SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", date); 
+0

,如果您的CultureInfo不是'en-UK'(或遵循該日曆日期格式約定的文化信息),將會失敗 – 2013-03-22 17:49:04

2

我同意其他人,你應該能夠配置JQuery的選擇器格式開始的,但如果你不能,這應該做的伎倆:

TextBox fixtureDateTextBox = (TextBox)Master.FindControl("ContentPlaceHolderMenu").FindControl("datepicker"); 
DateTime fixtureDate = DateTime.Parse(fixtureDateTextBox.Text, new CultureInfo("en-GB")); 
SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", fixtureDate.ToString(new CultureInfo("en-US")); 
+1

您的是一個強大的解決方案,因爲它在調用ToString時不會假設任何有關CurrentUICulture該日期 – 2013-03-22 18:01:15

0

添加在命名空間部分:using System.Globalization;

然後解析如下您輸入日期:

string DB_Date = (DateTime.Parse(fixtureDateTextBox.Text)).ToString(new CultureInfo("en-US")); 
+0

如果CurrentCulture不支持該日期格式樣式,那麼仍會失敗 – 2013-03-22 17:55:17

-1
DateTime UKDate = Convert.ToDateTime(datepicker.Text);<br> 
    string usDate= UKDate.ToString("dd-MM-yyyy");<br> 
    SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", usDate); 
相關問題