2017-07-07 94 views
0

我正在使用实体框架的asp网络核心。我有一个datetimepicker我正在使用日历。我已经使用jquery自定义了它的格式。datetime格式从mm-dd-yyyy转换为yyyy-mm-dd在c#

$('.datepicker').datetimepicker({ 
     format: 'yyyy-mm-dd'  
    }); 

这显示了用户的日期形式。 ,然后将其转换为C#datetime我将它以相同的格式保存在数据库中。每件事情都是正确的,直到现在。 现在我下次访问时,如果有数据,此页面必须预先填写。这次在日历的文本框中显示了一些东西,如0007/02/19,其中输入的日期为1993/07/02,保存在数据库中的日期为7/2/1993。我试过使用

  String DateString = Convert.ToString(ProfileDetails.DateOfBirth); 
      IFormatProvider culture = new CultureInfo("en-US"); 

      DateTime dateVal = DateTime.ParseExact(DateString, "MM/dd/YYYY", CultureInfo.InvariantCulture); 
      DateTime date = Convert.ToDateTime(dateVal); 
      user.DateOfBirth = dateVal; 

这个,但得到的错误字符串不是有效的日期时间格式。在我的模式中,我将日期定义为日期时间。我没有得到解决方案。任何人都可以给我正确的方式来完成这一点。

+0

您的文章是相当混乱。你在你的第一行代码中将一个日期转换为一个字符串,但是接下来会做一些其他我不太关注的东西。你能解释另外四行代码的用途吗? – Chris

+0

@Chris我也不理解代码,但我只是修复并发布了一个答案。有时候最好不要问 –

+0

@ J.Doe:除了你的分析结果是平的,因为我现在已经对你的回答发表了评论。我认为第一行生成类似“07/02/1993”的日期字符串是相当合理的,但由于日期选择器需要'yyyy-mm-dd'格式的东西,因此它可能会尝试聪明并将日期解析为“ yyyy = 07,mm = 02,dd = 19'。这就是为什么知道其他代码在哪里会非常有用,为什么OP还应该明确它们如何将数据传递到日期选择器或文本框。 – Chris

回答

0

因为你正在使用MM/dd/YYYY代替MM/dd/yyyy

工作代码:

String DateString = Convert.ToString("07/02/1993"); 
IFormatProvider culture = new CultureInfo("en-US"); 
DateTime dateVal = DateTime.ParseExact(DateString, "MM/dd/yyyy", CultureInfo.InvariantCulture); 
+0

我不明白这段代码。原始代码中的'ProfileDetails.DateOfBirth'必须是DateTime,否则没有任何一点调用'Convert.ToString'。你的第二行不需要,因为你从不使用文化。你从YYYY改为yyyy的行可能有用,但几乎肯定不是问题的原因,因为YYYY实际上会导致该行抛出'FormatException',除非给定的日期看起来像“07/02/YYYY”,我非常怀疑它是。 – Chris

+0

这只是从问题“修复”@Rishabh代码。没有更多的,不少于 –

+0

我的观点是,虽然它可能纠正一个错误,但它几乎肯定不会解决用户的问题,因此也不是真正的问题答案。 – Chris