我想知道的是在更新我的对象在游戏中的位置时是否应该使用System.currentTimeMillis()或System.nanoTime()?它们的运动变化与自上次呼叫后经过的时间成正比,我希望尽可能精确.
我读过不同的操作系统之间存在一些严重的时间分辨率问题(即Mac/Linux的分辨率几乎为1毫秒,而Windows的分辨率为50毫秒).我主要在Windows上运行我的应用程序,50ms分辨率似乎非常不准确.
有没有比我列出的两个更好的选择?
有什么建议/意见吗?
仅使用ANSI C,有没有办法以毫秒或更多精度测量时间?我正在浏览time.h但我只发现了第二个精确功能.
我正在制作一个程序,我需要在几毫秒内获得时间.到时候,我的意思是一个永远不会与自己相等的数字,并且总是比一秒钟前更大的1000个数字.我已经尝试过转换DateTime.Now
为a TimeSpan
并TotalMilliseconds
从中得到...但我听说它并不完全准确.
有更简单的方法吗?
我想知道,有没有办法在日期时间在c#中创建时间戳?我需要一个毫秒精度值,它也可以在Compact Framework中工作(说因为CF中不存在DateTime.ToBinary()).
我的问题是我想以数据库无关的方式存储这个值,所以我可以稍后对其进行排序,并找出哪个值来自另一个等等.
c# timestamp compact-framework time-precision database-agnostic
我在进行一些单元测试时遇到了DateTime.UtcNow的一些意外行为.看起来当你快速连续调用DateTime.Now/UtcNow时,它似乎会给你一个长于预期的时间间隔的相同值,而不是捕获更精确的毫秒增量.
我知道有一个秒表类更适合做精确的时间测量,但我很好奇是否有人可以在DateTime中解释这种行为?是否有针对DateTime.Now记录的官方精度(例如,精确到50毫秒内?)?为什么DateTime.Now会不像大多数CPU时钟那样精确?也许它只是为最低公分母CPU而设计的?
public static void Main(string[] args)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
for (int i=0; i<1000; i++)
{
var now = DateTime.Now;
Console.WriteLine(string.Format(
"Ticks: {0}\tMilliseconds: {1}", now.Ticks, now.Millisecond));
}
stopwatch.Stop();
Console.WriteLine("Stopwatch.ElapsedMilliseconds: {0}",
stopwatch.ElapsedMilliseconds);
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud) 所以,我知道我可以使用JavaScript获得当前时间(以毫秒为单位).但是,是否有可能以纳秒为单位获得当前时间?
我知道10年前,典型的时钟精度等于系统标记,其范围为10-30ms.在过去几年中,精确度分多步增加.如今,有一些方法可以测量实际纳秒的时间间隔.但是,通常的框架仍然会以大约15ms的精度返回时间.
我的问题是,哪些步骤确实提高了精度,如何以纳秒为单位进行测量,以及为什么我们仍然经常获得小于微秒的精度(例如在.NET中).
(免责声明:我之前没有问过这个奇怪的事情,所以我猜我在搜索时错过了这个问题.请关闭并指出我的问题,谢谢.我相信这属于SO而不是任何其他SOFU网站.我理解精度和准确度之间的区别.)
我有一些日志文件,其格式为HH:MM :: SS.nano_seconds(例如01:02:03.123456789).我想在python中创建一个日期时间,这样我就可以整齐地做数学的时间(例如,采取时间差异).strptime 使用%f 可以很好地工作几微秒.Python日期时间和时间模块真的不支持纳秒吗?
我们正在编写一个支持MySQL的科学工具.问题是,我们的日期时间字段需要微秒精度,MySQL目前不支持.我在这里看到至少两个解决方法:
最流行的查询是选择对应于时间间隔的列(即dt_record> time1和dt_record <time2).
在大型表(数百万行)的情况下,这些方法中的哪一种(或者可能是另一种方法)可能提供更好的性能?
假设我有两个这样的表:
Events
ID (PK int autoInc), Time (datetime), Caption (varchar)
Position
ID (PK int autoinc), Time (datetime), Easting (float), Northing (float)
Run Code Online (Sandbox Code Playgroud)
例如,如果我使用该Time
字段作为我的加入标准,列出所有事件及其位置是否安全?即:
SELECT E.*,P.* FROM Events E JOIN Position P ON E.Time = P.Time
Run Code Online (Sandbox Code Playgroud)
或者,甚至只是简单地比较日期时间值(考虑到参数化值可能包含小数秒部分 - MySQL一直接受的部分),例如
SELECT E.* FROM Events E WHERE E.Time = @Time
Run Code Online (Sandbox Code Playgroud)
我理解MySQL(版本5.6.4之前)只存储datetime字段WITHOUT毫秒.所以我认为这个查询功能正常.但是从版本5.6.4开始,我已经读过MySQL现在可以使用datetime字段存储毫秒.
假设使用诸如函数插入日期时间值NOW()
,则截断毫秒(<5.6.4),我假设允许上述查询起作用.但是,对于5.6.4及更高版本,这可能无法正常工作.我,并且只会对第二准确性感兴趣.
如果有人能回答以下问题,将不胜感激:
编辑
我知道我可以投出日期时间,感谢那些回答,但我正在尝试解决问题的根源(存储类型/定义已被更改的事实),我不想在我的使用函数查询.这否定了我优化应用索引等查询的所有工作,更不用说重写我的所有查询了.
EDIT2
任何人都可以建议不DATETIME
使用第二准确度加入某个领域的原因吗?
time-precision ×10
datetime ×6
c# ×3
mysql ×2
precision ×2
.net ×1
c ×1
clock ×1
java ×1
javascript ×1
milliseconds ×1
performance ×1
portability ×1
python ×1
strptime ×1
time ×1
timer ×1
timestamp ×1