【问题标题】:datetime format conversion from mm-dd-yyyy to yyyy-mm-dd in c#c#中从mm-dd-yyyy到yyyy-mm-dd的日期时间格式转换
【发布时间】:2017-07-07 13:14:37
【问题描述】:

我正在使用带有实体框架的 asp net core。我有一个 datetimepicker 用作日历。我已经像这样使用 jquery 自定义了它的格式。

  $('.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;

这个但得到错误字符串不是有效的日期时间格式。在我的模式中,我将日期定义为日期时间。我没有得到解决方案。谁能给我正确的方法来完成它。

【问题讨论】:

  • 您的帖子相当混乱。您在第一行代码中将日期转换为字符串,然后做了一堆我不太了解的其他事情。你能解释一下另外四行代码的用途吗?
  • @Chris 我也不懂该代码,但我只是修复并发布了答案。有时最好不要问
  • @J.Doe:除了您的分析不达标,正如我现在对您的答案的评论所指出的那样。我认为第一行生成像“07/02/1993”这样的DateString 是很合理的,但是因为日期选择器需要yyyy-mm-dd 格式的内容,它可能会尝试变得聪明并将日期解析为yyyy = 07, mm = 02, dd = 19。这就是为什么知道其他代码的用途非常有用,以及为什么 OP 还应该清楚他们如何将数据传递给日期选择器或文本框。

标签: c# asp.net-core-mvc


【解决方案1】:

因为您使用的是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);

【讨论】:

  • 我看不懂这段代码。原始代码中的ProfileDetails.DateOfBirth 必须是日期时间,否则调用Convert.ToString 毫无意义。由于您从不使用文化,因此不需要您的第二行。您从 YYYY 更改为 yyyy 的行可能有用,但几乎可以肯定不是问题的原因,因为拥有 YYYY 实际上会导致该行抛出 FormatException,除非给定日期看起来像“07/02/YYYY”,我非常怀疑。
  • 这只是问题中的“修复”@Rishabh 代码。不多也不少
  • 我的意思是,虽然它可能会纠正错误,但几乎可以肯定它实际上并不能真正解决用户的问题,因此不能真正回答问题。
猜你喜欢
  • 2016-01-02
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 2012-05-05
  • 2023-03-27
相关资源
最近更新 更多