0

我有一个 JQuery 日期选择器,它将日期以 DD/MM/YYYY 格式放入文本框中。

我正在尝试将其存储在需要接受日期为 MM/DD/YYYY 的 SQL Server 2008 中,我应该如何格式化日期才能使其正常工作?

这是在查询中添加 my 参数的代码,这会导致错误,因为日期和月份是错误的

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

5 回答 5

4

永远不要在你正在做的时候直接将输入文本插入到参数中——这是太多安全漏洞和漏洞的根本原因。首先通过调用将输入解析为DateTimeOffset对象(也可以使用DateTime,但一般情况下使用Offset比较好)DateTimeOffset.Parse(...),然后直接添加为参数即可,无需修改。

编辑:我重新阅读了您的问题,并意识到虽然上述内容没有错,但它确实错过了一些解决您问题的重要事项。有关如何配置日期选择器以显示其存储在备用字段中的备用日期格式,请参阅此内容:

编辑 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)就是你要对输入框做的事情。

于 2013-03-22T17:34:18.517 回答
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"));
于 2013-03-22T17:40:18.093 回答
0

尝试这个:

TextBox fixtureDateTextBox = (TextBox)Master.FindControl("ContentPlaceHolderMenu").FindControl("datepicker");
DateTime date = DateTime.Parse(fixtureDateTextBox.Text);
SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", date);
于 2013-03-22T17:39:59.230 回答
0

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

然后解析您的输入日期如下:

string DB_Date = (DateTime.Parse(fixtureDateTextBox.Text)).ToString(new CultureInfo("en-US"));
于 2013-03-22T17:48:25.517 回答
-1
  DateTime UKDate = Convert.ToDateTime(datepicker.Text);<br>
  string usDate= UKDate.ToString("dd-MM-yyyy");<br>
  SqlParameter fixtureDateParam = new SqlParameter("@fixtureDate", usDate);
于 2016-03-02T13:06:04.173 回答