使用此字符串填充DateTime对象03-06-2012 08:00 am

时间:2012-06-03 15:46:15

标签: c# .net datetime datetime-parsing

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

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

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

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

更新 -

下面有很多答案和很多东西来清除这个小问题的基础知识 从下面的快照中,您可以看到我在Visual Studio中调试期间尝试的内容和收到的内容 enter image description here

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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

答案 2 :(得分:1)

您需要使用DateTime.ParseExact。像

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