以毫秒的精度获取DateTime.Now

我怎样才能精确构造一个毫秒精度的实际时间的时间戳?

我需要像16.4.2013 9:48:00:123。 这可能吗? 我有一个应用程序,其中我每秒采样值10次,我需要在一个图表中显示它们。

我怎样才能精确构造一个毫秒精度的实际时间的时间戳?

我怀疑你的意思是毫秒的准确性DateTime有很多的精度,但在精度方面相当粗糙。 一般来说,你不能。 通常系统时钟(这是DateTime.Now从中获取数据的地方)的分辨率约为10-15毫秒。 有关更多详细信息,请参阅Eric Lippert 关于精确度和准确性的博文 。

如果您需要比此更准确的时间,您可能需要考虑使用NTP客户端。

不过,目前尚不清楚您是否真的需要毫秒精度。 如果你不关心确切的时间 – 你只是想以正确的顺序显示样本,具有“相当好”的准确性,那么系统时钟应该没问题。 我build议您使用DateTime.UtcNow而不是DateTime.Now但要避免夏令时转换等时区问题。

如果你的问题实际上只是将毫秒精度的DateTime转换为string,我build议使用:

 string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture); 

(请注意,与您的样本不同,这是可sorting的,不太可能引起混淆是否意味着“月/日/年”或“日/月/年”)。

这应该工作:

 DateTime.Now.ToString("hh.mm.ss.ffffff"); 

如果你不需要它显示,只需要知道时间差,那么不要将其转换为string。 只要把它作为, DateTime.Now();

并使用TimeSpan来了解时间间隔的差异:

 DateTime start; TimeSpan time; start = DateTime.Now; //Do something here time = DateTime.Now - start; label1.Text = String.Format("{0}.{1}", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0')); 

火焰术师的回答对我来说似乎很不错,但也许你想要:

 DateTime.Now.Millisecond 

但是如果你比较date,TimeSpan就是要走的路。

我正在寻找一个类似的解决scheme,基于这个线程上的build议,我使用下面的DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff") ,它的工作就像魅力。 注意: .fff是您希望捕获的精度数字。

据我了解这个问题,你可以去:

 DateTime dateTime = DateTime.Now; DateTime dateTimeInMilliseconds = dateTime.AddTicks(-1 * dateTime.Ticks % 10000); 

这将切断小于1毫秒的刻度。

 public long millis() { return (long.MaxValue + DateTime.Now.ToBinary()) / 10000; } 

如果你想微秒,只需要将10000改为10 ,如果你想要10微秒,删除/ 10000

你请看这里:代码:(DateTime.UtcNow – 新的DateTime(1970,1,1))。TotalMillisecondstesting: https ://currentmillis.com/

DateTime.Now.ToString( “ddMMyyyyhhmmssffff”)