如何以毫秒精度获得当前时间(C#)

时间:2011-05-27 21:44:45

标签: c# sql-server datetime time

我使用System.DateTime.Now,但它返回5/28/2011 1:45:58 AM。(没有Milli秒精度)

我想在数据库中以Milli秒精度保存当前时间(或日期时间)。

更新:抱歉,我的意思是 Milli 第二

5 个答案:

答案 0 :(得分:6)

System.DateTime将精度管理为毫秒,5/28/2011 1:45:58 AM就是格式化为字符串的方式。

要使用毫秒格式包含使用格式字符串:"d/M/yyyy hh:mm:ss.fff tt"

答案 1 :(得分:2)

如果要将其存储在SQL Server数据库中,ADO.Net会自动将CLR System.DateTime数据类型转换为SQL Server datetime数据类型(反之亦然)。

CLR System.DateTime具有100纳秒的精度(例如,每个刻度为100纳秒;每毫秒10,000个刻度,每秒1000万个刻度。

SQL Server datetime数据类型精确到(大约)3ms。

您不必担心它:ADO.Net会为您处理它。

OTOH,如果你真的想扔掉额外的纳秒,这样的事情就应该做到这一点:

public static DateTime ToExactMillisecondPrecision( DateTime dt )
{
  const long TICKS_PER_MILLISECOND = 10000 ;
  long       totalMilliseconds     = dt.Ticks / TICKS_PER_MILLISECOND ;

  return new DateTime( totalMilliseconds * TICKS_PER_MILLISECOND ) ;
}

无法真正看到自己的需要。

答案 2 :(得分:1)

查看此链接中的属性列表。所有不同的选择都在那里。

http://msdn.microsoft.com/en-us/library/system.datetime.aspx

包括secondsmillisecondsticks

答案 3 :(得分:1)

你发布的字符串包含秒数,所以我想你不是要求第二个精度,而是要求更精确的计时。

返回DateTime.Now的值,精度超过毫秒。只是使用默认格式,不显示毫秒。要以毫秒显示该值,您可以使用the o standard format string,也可以编写自己的custom format string,其中包含毫秒格式说明符fff

请注意,仅仅因为返回的值是精确,这并不意味着它与准确一样多。实际精度没有准确定义,但往往是几十毫秒。

答案 4 :(得分:0)

没有必要将日期转换为字符串。也许真正的问题是你使用动态SQL。