【问题标题】:Populating DateTime object with this string 03-06-2012 08:00 am使用此字符串填充 DateTime 对象 03-06-2012 08:00 am
【发布时间】:2012-06-03 15:46:14
【问题描述】:

如何从此“03-06-2012 08:00 am”字符串填充 C# DateTime 对象。

我正在尝试以下类型的代码:

DateTime lectureTime  = DateTime.Parse("03-06-2012 08:00 am");

我正在使用基于这个http://trentrichardson.com/examples/timepicker/ 插件的jQuery 来生成日期时间。

更新--

下面有很多答案,还有很多东西可以为这个小问题弄清楚基础知识 从下面的快照中,您可以看到我在 Visual Studio 调试期间尝试过的内容和收到的内容

【问题讨论】:

  • 是 6 月 3 日还是 3 月 6 日?

标签: c# .net datetime datetime-parsing


【解决方案1】:
string lectureTime = "03-06-2012 08:00 am";
DateTime time = DateTime.ParseExact(lectureTime , "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);
  • dd:天 [00-31]
  • MM:月 [00-12]
  • yyyy: 年 [0000-9999]
  • '-':用破折号分隔
  • hh:小时 [00-12]
  • 毫米:分钟[00-60]
  • tt:时间 [am, pm](不区分大小写)

【讨论】:

  • 我怀疑它应该是 hh 而不是 HH - 你很少会指定 24 小时制 AM/PM 指示符。
【解决方案2】:

如果您拥有正确的文化,您的代码无需修改即可运行。但您可能使用了与生成字符串的程序不同的日期格式。

我建议在以下情况下始终指定 CultureInfo

  • 解析另一个系统生成的DateTime
  • 输出将由另一个系统解析的DateTime(不只是显示给您的用户)。

试试这个:

CultureInfo cultureInfo = new CultureInfo("en-GB"); // Or something else?
DateTime lectureTime  = DateTime.Parse("03-06-2012 08:00 am", cultureInfo);

在线查看:ideone

DateTime.ParseDateTime.ParseExact 之间的区别

如果您希望 .NET 尽最大努力解析字符串,请使用 DateTime.Parse。它可以处理多种常见格式。

如果您提前知道日期的确切格式,并且想要拒绝与此格式不同的任何内容(即使可以正确解析且没有歧义),请使用DateTime.ParseExact

【讨论】:

  • 在这个演示中它替换了 - 在输出中使用 /,生成的输出字符串格式会被 sql datetime 数据类型识别吗?
  • 其实这个答案是不正确的。 CultureInfo.InvariantCulture 内部采用美国日期格式 (MM/dd/yyyy),因此它将给定字符串解析为 3 月 6 日,而不是 6 月 3 日(根据 OP 的要求)。
  • @Douglas:如果文化指定正确,它应该可以工作。也许这是一种印度格式,因为 OP 来自印度?
  • 是的。几乎所有欧洲文化都使用dd/MM/yyyy(只有美国使用中端格式)。不过,我从未见过它与 - 一起用作日期分隔符。
  • @Douglas 如果你使用不变量,你应该指定它在项目中的文化,即使你使用的是默认值。其他任何事情都是对您注意到的模棱两可的邀请。
【解决方案3】:

您需要使用DateTime.ParseExact。类似的东西

DateTime lectureTime  = DateTime.ParseExact("03-06-2012 08:00 am", "dd-MM-yyyy hh:mm tt", CultureInfo.InvariantCulture);

【讨论】:

  • This answer 使用 ParseExact 表示类似于问题中的 DateTime 字符串。
猜你喜欢
  • 2020-01-20
  • 1970-01-01
  • 2012-03-24
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多