我使用System.DateTime.Now
,但它像5/28/2011 1:45:58 AM
一样返回。(无毫秒精度)
我想在数据库中以毫秒精度保存当前时间(或日期时间)。
更新:对不起,我的意思是Milli第二个
System.DateTime
将精度管理到毫秒,5/28/2011 1:45:58 AM
正是它被格式化为字符串的方式。
要使用包含毫秒的格式,请使用格式字符串:"d/M/yyyy hh:mm:ss.fff tt"
如果要将其存储在SQL Server数据库中,请使用ADO。Net自动将CLR System.DateTime
数据类型转换为SQL Server datetime
数据类型(反之亦然)。
CLR System.DateTime
具有100纳秒的精度(例如,每个刻度为100纳秒;每毫秒10000个刻度,每秒1000万个刻度。
SQL Server日期时间数据类型精确到(大约)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 ) ;
}
我自己真的看不出有什么需要。
查看此链接中的属性列表。所有不同的选择都在那里。
http://msdn.microsoft.com/en-us/library/system.datetime.aspx
包括秒、毫秒和刻度
您发布的字符串包含秒,所以我想您不是要求秒精度,而是要求更精确的计时。
DateTime.Now
的值以超过毫秒的精度返回。只是使用默认格式时,毫秒不会显示。要以毫秒显示值,可以使用o
标准格式字符串,也可以编写自己的自定义格式字符串,其中包括毫秒格式说明符fff
。
请注意,仅仅因为返回的值是精确的,并不意味着它有那么精确。实际的准确度并没有精确定义,但往往在几十毫秒内。
不需要将日期转换为字符串。也许真正的问题是使用动态SQL。