只需要在C#中以毫秒为单位对当前程序的进展进行稳定计数。我不关心它的时间戳,无论是程序启动时间,午夜还是时代,我只需要一个返回稳定毫秒值的函数,除了增加1之外,它不会以异常方式改变每毫秒。你会惊讶地发现我找不到一些全面而简单的答案。
编辑:为什么要从我的标题中删除C#?我认为这是一个非常重要的信息。
答案 0 :(得分:1)
当您的计划开始时,请创建StopWatch
和Start()
。
private StopWatch sw = new StopWatch();
public void StartMethod()
{
sw.Start();
}
您可以随时查询秒表:
public void SomeMethod()
{
var a = sw.ElapsedMilliseconds;
}
如果您想要准确/精确的内容,那么您需要使用StopWatch,请阅读Eric Lippert的博客(以前是C#编译器团队的首席开发人员)Precision and accuracy of DateTime。
摘录:
现在,“从开始到结束已经过了多长时间?”的问题是一个完全不同的问题,而不是“现在几点了?”如果您想问的问题是某些操作需要多长时间,以及你想要一个高精度,高精度的答案,然后使用StopWatch类。它确实具有接近其精度的纳秒精度和精度。
如果您不需要准确的时间,并且您不关心精确度以及导致您的毫秒实际上负的边缘情况的可能性,那么请使用DateTime
答案 1 :(得分:0)
您可以在程序启动时以毫秒为单位存储当前时间,然后在您的函数中再次获取当前时间并减去
编辑:
如果您需要的是稳定的过程周期数,我会使用处理器时钟而不是时间。
根据您的评论,您可以使用DateTime.Ticks,即每个刻度1 / 10,000毫秒
此外,如果你想做时间的事情,你可以使用DateTime.Now作为你在启动程序时存储的变量,并在你想要的时候再做一次DateTime.Now。它有一毫秒的属性。
无论哪种方式 DateTime 都是你要找的东西
答案 2 :(得分:0)
听起来你只是试图获得当前的日期和时间,以毫秒为单位。如果您只是尝试获取当前时间(以毫秒为单位),请尝试以下操作:
long milliseconds = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
答案 3 :(得分:-1)
你的意思是DateTime.Now
?它保留绝对时间,减去两个DateTime
实例会为您提供一个具有TimeSpan
属性的TotalMilliseconds
对象。