我做了一些搜索,并没有真正返回任何内容。
但我正在尝试用Java复制PHP的microtime()
函数。我发现了一些像this one这样的文章讨论了如何在Javascript中实现它。他们的逻辑是有缺陷的,并且microtime的msec值总是会返回0.这就是我到目前为止......
long mstime = System.currentTimeMillis();
long seconds = mstime / 1000;
double decimal = (mstime - (seconds * 1000)) / 1000;`
System.out.println(decimal + " " + seconds);
除了无论如何,由于公式,函数的小数部分(msec等效于php)将始终返回0。我陷入困境,困惑,需要帮助。
固定代码:
long mstime = System.currentTimeMillis();
long seconds = mstime / 1000;
double decimal = (mstime - (seconds * 1000)) / 1000d;
return decimal + " " + seconds;
答案 0 :(得分:6)
(mstime - (seconds * 1000))
是long
,除以1000,得到0(长)。
要获得浮点精度,要么转换为double
,要么除以double
值:
double decimal = (mstime - (seconds * 1000)) / 1000d; // note the d
顺便说一句,如果您需要更高的持续时间精度(时间增量),请使用System.nanoTime()
。
System.currentTimeMillis()
不准确,并且(取决于平台)不会像预期的那样以单位增量(1ms)增加。例如,在我的系统(Win7)上,System.currentTimeMillis()
的值每15到16毫秒更改一次。
答案 1 :(得分:2)
试试这个:
long mstime = System.currentTimeMillis();
float seconds = mstime / 1000;
float decimal = (mstime - (seconds * 1000)) / 1000;
System.out.println(decimal + " " + seconds);
我尝试了它并输出为:
131.072 1.38548314E9