将DateTime值更新为具有奇怪格式的数据库显示错误的日期

时间:2016-09-09 13:44:57

标签: c# jquery asp.net sql-server

我正在使用jQuery日期选择器让用户在文本框中输入日期。然后,日期将以2位数的月,日和2位数年份格式显示在网页上,并带有斜线mmddy

$(function() {
      $("#datepicker").datepicker({ dateFormat: 'mmddy' });
             });

输入此日期后,它会正确显示在页面上,但数据库中的日期不会反映在文本框中输入的日期。相反,我将输入正确的日期和年份,但不是月份。

CultureInfo provider = CultureInfo.InvariantCulture;
DateTime dt new DateTime();
dt = DateTime.ParseExact(datepicker.Text, "mmddy", provider);

cmd.Parameters.AddWithValue("@date", dt);

//result example 2016-01-09 hh:mm:ss the should be 2016-09-09 

我尝试过转换为字符串。我尝试了不同的解析方法(TryParseExact等)。它会在数据库中返回相同的结果,否则我会收到错误,例如无效的日期格式或日期小于可以在数据库中输入的最小日期。我不想使用DateTime.Now,因为当它工作时,我正在使用检查器,如果用户输入将来的日期,它将更新到将来的日期并使用DateTime.Now将始终输入当前日期。我的表中的日期类型是datetime,使用旧版本的sql,并且允许NULL

1 个答案:

答案 0 :(得分:5)

您的格式字符串mmddy不正确。

您需要使用大写M个月作为小写m表示分钟:

e.g。

  

" M"月份,从1到12。

     

" MM"这个月,从01到12。

     

" MMM"月份的缩写名称。

     

" MMMM"这个月的全名。

参考Custom Date Time Formats