DateTime.ParseExact在c#中省略了毫秒数?

时间:2014-05-21 16:14:46

标签: c# .net datetime

我正在尝试将字符串转换为c#中的Datetime。 String datestring = 2013/03/18 10:54:07.679

  1. 我试过DateTime dt=DateTime.ParseExact(datestring, "yyyy/MM/dd HH:mm:ss.fff",null); 结果是{3/18/2013 10:54:07 AM}

  2. 我试过DateTime.TryParseExact(datestring,"yyyy/MM/dd HH:mm:ss.fff",CultureInfo.InvariantCulture,DateTimeStyles.None,out dttt); 结果是{3/18/2013 10:54:07 AM}

  3. 在上述两种情况下,它都忽略了毫秒(679)。

    如何通过保持毫秒来正确地将其转换为日期时间?

2 个答案:

答案 0 :(得分:11)

它并没有忽略你只是通过调试器检查,调试器使用AM或PM显示它,它显示毫秒显示毫秒。

试试这个:

DateTime dt=DateTime.ParseExact(datestring, "yyyy/MM/dd HH:mm:ss.fff",null);
Console.WriteLine(dt.ToString("yyyy/MM/dd HH:mm:ss.fff"));
您的评论But I need the answer in Datetime instead of string

中的

编辑

您已经包含MilliSeconds日期时间,因为调试器没有显示 (如Ant P注释中所述)调试器调用ToString()方法的无参数重载,该方法显示没有MilliSeconds的DateTime

答案 1 :(得分:0)

您需要注意,当时间包含两位数的毫秒时,无法解析精确的字符串fff。

例如在我的情况下,我有2019-08-19 13:35:06.27无法解析 但是2019-08-20 13:35:04.274将正确解析。 我想它也会发生1位数和0位数的毫秒。

仅当毫秒数具有尾随零时,它将起作用。例如.270

示例:

string x = "2019-08-20 13:35:04.27";
DateTime d;

bool result = DateTime.TryParseExact(x, "yyyy-MM-dd HH:mm:ss.fff", 
System.Globalization.CultureInfo.InvariantCulture, 
System.Globalization.DateTimeStyles.None, out d);

Console.WriteLine(result);