试图在C#中解析DateTime

时间:2011-05-18 04:28:49

标签: c# .net parsing datetime

我正在尝试解析C#中的DateTime并拥有以下代码行:

string dt =Convert.ToString( DateTime.FromFileTime(e8.sts[counter8].TimeStamp));
string format = "dd-MM-yyyy HH:mm:ss";
DateTime dateTime = DateTime.ParseExact(dt, format,CultureInfo.InvariantCulture);

当我调试dt作为05/18/2011 09:25:17 AM进入时,我得到了一个说法:

  

字符串未被识别为有效字符串   日期时间。

6 个答案:

答案 0 :(得分:3)

开始时,您无需进行转换。

DateTime.FromFileTime(e8.sts[counter8].TimeStamp)已经返回DateTime ...

即便如此,使用您提供的字符串,DateTime.Parse(str)将照顾您。

如果你最终将这个值存储在一个文本文件中,并且使用自定义格式字符串来解析它(你不需要这样做)真的是死的:

您拥有的格式:

Day/Month/Year 24-hour:minute:second

但是看看你的输入日期:

  

05/18/2011 09:25:17 AM

您想要:

Month/Day/Year 12-hour:minutes:seconds AM/PM

您想要的格式是:

MM/dd/yyyy hh:mm:ss tt

答案 1 :(得分:1)

您的日期时间以MM-dd-yyyy进入,但您尝试将其解析为dd-MM-yyyy

将格式字符串更改为"MM-dd-yyyy HH:mm:ss tt"

你可以告诉我dt使用你当前的格式字符串,试图将其解析为2011年第18个月(MM)的第5天(日期)(yyyy)......

修改
抱歉,我完全错过了AM / PM指示符,您需要格式字符串的tt部分。这将处理字符串的AM / PM部分

编辑2:
根据您最近的评论,您希望将其转换为MM-dd-yyyy HH:mm:ss字符串,您需要做的就是:

var outputString = DateTime.FromFileTime(e8.sts[counter8].TimeStamp).ToString("MM-dd-yyyy HH:mm:ss");

您已经在val; id .NET DateTime对象中拥有TimeStamp,因此您需要做的就是使用所需的时间格式执行.ToString()

答案 2 :(得分:1)

这不是预期的吗?日期05/18/2011 09:25:17 AM与您的格式字符串dd-MM-yyyy HH:mm:ss不符。您的日期格式为MM/dd/yyyy HH:mm:ss tt

试试这个:

 DateTime dateTime = DateTime.Parse("05/18/2011 09:25:17 AM");

答案 3 :(得分:1)

我认为转换没有任何理由。只需使用:

DateTime.FromFileTime(e8.sts[counter8].TimeStamp)

答案 4 :(得分:0)

DateTime parsed = DateTime.ParseExact(dt,"MM/dd/yyyy HH:mm:ss tt",CultureInfo.InvariantCulture);

答案 5 :(得分:0)

其他许多人已经在这里解释过,格式需要改变。然而,即使我尝试了他们建议的格式,我仍然收到你所做的相同错误。最终我找到了正确的格式以获得成功的结果。

格式应为:

string format = "MM/dd/yyyy HH:mm:ss tt";

因为您正在指定时间模式,例如AM。如果月份以单个数字给出,例如:5,那么MM应该替换为M.我在日期之间使用斜线而不是夸大,因为这是原始日期的给定方式。