3

如何从此“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 调试期间尝试过的内容和收到的内容 在此处输入图像描述

4

3 回答 3

3
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]
  • mm:分钟[00-60]
  • tt:时间 [am, pm](不区分大小写)
于 2012-06-03T15:51:14.323 回答
2

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

我建议始终指定CultureInfo时间:

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

试试这个:

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

在线查看它:ideone

DateTime.Parse和之间的区别DateTime.ParseExact

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

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

于 2012-06-03T15:51:27.707 回答
1

您需要使用DateTime.ParseExact。就像是

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