JSON / JavaScript中的高分辨率日期和时间表示

时间:2012-02-21 09:28:42

标签: javascript .net json datetime time

是否有可接受的方式来表示JSON和/或JavaScript中的高分辨率时间戳?

理想情况下,我希望它支持至少100 ns的分辨率,因为这会使服务器代码更简单一些(因为.NET DateTime分辨率也是100 ns)。

我发现了很多关于操作高分辨率计时器等问题的问题(显然这是不可能的),但我只需要在应用程序API中以某种方式表示它。

这适用于使用JSON以REST样式构建的API,因此实际上不需要测量时间。但是,我想在其全分辨率(100 ns,因为这是.NET)中传输和使用(可能在JavaScript中)时间戳。

2 个答案:

答案 0 :(得分:3)

根据您的澄清,您的时间戳不是一个非常大的整数吗?当前时间戳为1329826212。如果你想要纳秒精度,我们只是谈论9个数字:1329826212000000000。这是JavaScript可以轻松处理的数字。只需将其发送为:

myobject = {
    "time": 1329826212000000000
}

应该完全没问题。我只是尝试对它进行一些算术运算,除以大数并乘以相同的运算。没有价值损失。

JavaScript支持大量浮点数,但保证-2^53 to 2^53的整数精度。所以我觉得你很高兴。

<强>更新 对不起,我刚刚重新阅读你的问题。你想代表它吗?好吧,我能想到的一件事是提取最后9位数(超出第二粒度的额外精度)并将它们显示为数字的小数部分。您甚至可能希望提取最后的6个digis(超出毫秒粒度的额外精度)。

答案 1 :(得分:2)

JavaScript Date object只有毫秒精度。

但是,如果您只是寻找一种标准格式来编码纳秒精度时间,ISO 8601 format string将允许您将纳秒定义为秒的分数:

  

小数分数也可以添加到三个时间元素中的任何一个。小数点,可以是逗号或点(没有任何偏好,如最近在2003年第22届大会CGPM第10号决议中所述),用作时间元素及其分数之间的分隔符。分数只能添加到表示中的最低阶时间元素。要表示“14小时30分半”,请不要包括秒数。将其表示为“14:30,5”,“1430,5”,“14:30.5”或“1430.5”。小数部分的小数位数没有限制。但是,通信方需要同意小数位数。


jsperf.combenchmarkjs.com使用了一个技巧,它使用一个公开Java纳秒计时器的小型Java小程序。

请参阅Stack Overflow问题 Is there any way to get current time in nanoseconds using JavaScript?