Высокое разрешение даты и времени в формате JSON / JavaScript - PullRequest
0 голосов
/ 21 февраля 2012

Есть ли приемлемый способ представления меток времени с высоким разрешением в JSON и / или JavaScript?

В идеале я хотел бы, чтобы он поддерживал разрешение не менее 100 нс, поскольку это сделало бы код сервера немного проще(поскольку разрешение .NET DateTime также составляет 100 нс).

Я нашел много вопросов, касающихся управления таймерами высокого разрешения и тому подобным (что, по-видимому, невозможно),но мне просто нужно как-то представить это в API приложения.

Это для API, встроенного в стиль REST , использующего JSON, поэтому на самом деле измеряет время в этомразрешение не требуется.Однако я хотел бы передать и использовать (возможно, в JavaScript) метку времени в полном разрешении (100 нс, поскольку это .NET).

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

В свете ваших разъяснений, не является ли ваша временная метка просто большим целым числом?Текущая временная метка 1329826212.Если вам нужна точность в наносекунду, мы говорим о еще 9 цифрах: 1329826212000000000.Это число, с которым может легко справиться JavaScript.Просто отправьте это как:

myobject = {
    "time": 1329826212000000000
}

Это должно быть прекрасно.Я просто попытался сделать некоторые арифметические операции над ним, деление на большое число и умножение на то же самое.Потеря значения не происходит.

JavaScript поддерживает огромный диапазон чисел с плавающей запятой, но гарантирует интегральную точность от -2^53 to 2^53.Поэтому я думаю, что вы готовы идти.

ОБНОВЛЕНИЕ Извините, я просто перечитал ваш вопрос.Вы хотите это представить?Ну, одна вещь, о которой я могу подумать, - это извлечь последние 9 цифр (дополнительная точность помимо второй детализации) и показать, что они являются десятичной частью числа.Возможно, вы даже захотите извлечь последние 6 цифр (дополнительная точность сверх миллисекундной детализации).

2 голосов
/ 21 февраля 2012

Объект JavaScript Date имеет точность только в миллисекундах.

Однако, если вы просто ищете стандартный формат для кодирования времени с точностью до наносекунды, строка формата ISO 8601 позволит вам определять наносекунды как доли секунд:

Десятичные дроби также могут быть добавлены к любому из трех временных элементов. Десятичная точка, либо запятая, либо точка (без каких-либо предпочтений, как было указано совсем недавно в резолюции 10 22-й сессии Генеральной конференции CGPM в 2003 году), используется в качестве разделителя между элементом времени и его долей. Часть может быть добавлена ​​только к элементу времени самого низкого порядка в представлении. Для обозначения «14 часов, 30 с половиной минут» не включайте число секунд. Представьте его как «14: 30,5», «1430,5», «14: 30,5» или «1430,5». Не существует ограничения на количество десятичных разрядов для десятичной дроби. Тем не менее, число десятичных знаков должно быть согласовано сообщающими сторонами.


Существует трюк, используемый jsperf.com и benchmarkjs.com , который использует небольшой апплет Java, который предоставляет таймер наносекунды Java.

См. Вопрос переполнения стека Есть ли способ получить текущее время в наносекундах с помощью JavaScript? .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...