Как мне преобразовать объект даты JavaScript в тики? Я хочу использовать галочки, чтобы получить точную дату для моего приложения C # после синхронизации данных.
c#
javascript
Тальха
источник
источник
utcnow
тики (относительно 1970) на страницу и сохраняя разницу между этим значением и значением+new Date()
в начале страницы. Тогда вся дата / время могут быть смещены на эту величину. Любая ошибка связана только с задержкой страницы.Ответы:
Если вы хотите преобразовать свой
DateTime
объект в универсальные галочки, используйте следующий фрагмент кода:var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);
источник
Date
Происхождение типа JavaScript - это эпоха Unix: полночь 1 января 1970 года.DateTime
Происхождение типа .NET - полночь 1 января 0001 года.Вы можете преобразовать
Date
объект JavaScript в тики .NET следующим образом:var yourDate = new Date(); // for example // the number of .net ticks at the unix epoch var epochTicks = 621355968000000000; // there are 10000 .net ticks per millisecond var ticksPerMillisecond = 10000; // calculate the total number of .net ticks for your date var yourTicks = epochTicks + (yourDate.getTime() * ticksPerMillisecond);
источник
(621355968e9 + (new Date()).getTime() * 1e4)
сокращает эти 4 строки, как только у вас будет понимание. Отличная публикация @LukeHЕсли под «тиками» вы подразумеваете что-то вроде «миллисекунд с начала эпохи», вы можете вызвать «.getTime ()».
var ticks = someDate.getTime();
Из документации MDN возвращаемое значение - это
источник
Развернув принятый ответ
635646076777520000
, добавлено почему .Javascript
new Date().getTime() or Date.now()
вернет количество прошедших миллисекундmidnight of January 1, 1970
.В .NET ( источник в
Remarks
разделах)621355968000000000
это значение тиков отmidnight Jan 1 01 CE
доmidnight Jan 1 1970
Итак, в .NET
Console.Write(new DateTime(621355968000000000)) // output 1/1/1970 12:00:00 AM
Следовательно, чтобы преобразовать время javascript в тики .Net
var currentTime = new Date().getTime(); // 10,000 ticks in 1 millisecond // jsTicks is number of ticks from midnight Jan 1, 1970 var jsTicks = currentTime * 10000; // add 621355968000000000 to jsTicks // netTicks is number of ticks from midnight Jan 1, 01 CE var netTicks = jsTicks + 621355968000000000;
Теперь в .NET
Console.Write(new DateTime(netTicks)) // output current time
источник
Дата в JavaScript также содержит смещение. Если вам нужно избавиться от него, используйте следующее:
return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);
Я использую решение Скейха и вычитаю тики для «смещения».
источник
Так и должно быть
date.GetTime()
. Имейте в виду, что C # и Javascript используют разные начальные даты, поэтому используйте что-то подобное для преобразования в C # DateTime.public static DateTime GetDateTime(long jsSeconds) { DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0); return unixEpoch.AddSeconds(jsSeconds); }
источник