以毫秒的精度获取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”)