将英国日期格式转换为美国

时间:2013-03-22 17:31:12

标签: c# asp.net date date-format

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

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

这是将我的参数添加到查询中的代码,这会导致错误,因为日期和月份是错误的方式

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

5 个答案:

答案 0 :(得分:4)

从不,永远直接将输入文本插入到参数中 - 这是导致太多安全漏洞和漏洞的根本原因。首先将输入解析为DateTimeOffset对象(您也可以使用DateTime,但通常可以使用Offset更好)通过调用DateTimeOffset.Parse(...),然后您只需将其添加为参数没有修改它。

编辑:我重新阅读了你的问题,并意识到虽然上面没有错,但它确实错过了一些解决你问题的重要事情。请参阅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)是您要对输入框执行的操作。

答案 1 :(得分: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"));

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

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

然后按如下方式解析输入日期:

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

答案 4 :(得分:-1)

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