繁体   English   中英

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

[英]DateTime.ParseExact omitting milliseconds in c#?

我正在尝试将字符串转换为 c# 中的日期时间。 字符串日期字符串 = 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}

在上述两种情况下,它都会省略毫秒(679)。

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

它并没有忽略您只是通过调试器进行检查,并且调试器使用 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的 DateTime,只是调试器没有显示,因为(如Ant P评论中所述)调试器调用ToString()方法的无参数重载,该方法显示没有 MilliSeconds 的DateTime

您需要注意,当时间包含 2 位毫秒时,解析精确字符串 fff 将不起作用。

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

它仅在毫秒有尾随零时才有效。 例如 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);

使用大写 FFF

DateTime.ParseExact("15.06.2020 15:52:04.9", "dd.MM.yyyy HH:mm:ss.FFF", CultureInfo.CurrentCulture)

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM