【问题标题】:Unable to parse a date Time无法解析日期时间
【发布时间】:2012-09-18 16:12:52
【问题描述】:
var date = "05/18/2012";

DateTime.ParseExact(date, "yyyy/MM/dd", CultureInfo.InvariantCulture)

DateTime.Parse(date);

我认为这里的问题是日期应该是日/月/年。问题是客户想要这种格式。该系统必须能够以英语和法语运行。我希望以相同的方式解析所有日期,以便它们都采用格式 - yyyy/MM/dd。

前面的例子似乎都不起作用。

编辑:我可以将日期设置为 2012/05/18 格式,但如何为 DateTime.Now 设置日期?

【问题讨论】:

  • 根据您指定的格式,您的 var 日期应为“2012/05/18”。您是否试图让它以您提供的格式格式化日期?
  • 一个问题是您的 ParseExact 格式甚至与您声称的日期格式不接近。您有一个以月、日和年为格式的值并尝试解析它以某种完全不同的格式。我希望您不要尝试存储格式本身而不是值(没有格式)。
  • 仅供参考,感谢您的反对。它确实丰富了社区......
  • @JonathanO:我的反对意见是因为这个问题没有什么意义——它声明“解析”(输入)但问题出现(不清楚)是关于输出的。

标签: c# asp.net datetime


【解决方案1】:

应该是

string date = "05/18/2012";
DateTime dateA = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.InvariantCulture);
string newDate = dateA.ToString("yyyy-MM-dd");

【讨论】:

  • 我知道这会起作用,但我需要它的格式为 yyyy/mm/dd。这是一个项目要求
  • @JonathanO 如何将其转换回字符串string newDate = dateA.ToString("yyyy-MM-dd");
【解决方案2】:

ParseExact 允许你告诉解析器日期的格式。所以在你的例子中你说它是 yyyy/MM/dd 所以你应该有像“2012/05/18”这样的日期设置来解析正确。

这里是例子。

var date = "05/18/2012";
var date2 = "2012/05/18";

var pDate = DateTime.Parse(date);
var pDate2 = DateTime.ParseExact(date2, "yyyy/MM/dd", null);

Console.WriteLine("Normal Date Formated: " + pDate.ToString("yyyy/MM/dd"));
Console.WriteLine("Your Format, Parsed: " + pDate2.ToShortDateString());
Console.WriteLine("DateTime.Now Formatted: " + DateTime.Now.ToString("yyyy/MM/dd"));

输出

Normal Date Formated: 2012/05/18
Your Format, Parsed: 5/18/2012
DateTime.Now Formatted: 2012/09/18

【讨论】:

  • 感谢详细的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 2023-02-15
  • 2021-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多