我正在尝试解析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
进入时,我得到了一个说法:
字符串未被识别为有效字符串 日期时间。
答案 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.我在日期之间使用斜线而不是夸大,因为这是原始日期的给定方式。