6 ответов:
Если вы хотите преобразовать объект datetime в универсальные тики, используйте следующий фрагмент кода
var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);есть 10000 ТИКов в миллисекунду.
И есть621355968000000000тики между 1 января 0001 и 1 января 1970 года.
JavaScript
Dateпроисхождение типа-эпоха Unix: полночь 1 января 1970 года.интернет .Сети
DateTimeначало типа полночь 1 января 0001.вы можете перевести JavaScript
Dateобъект .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);
Если под " тиками "вы подразумеваете что-то вроде" миллисекунд с эпохи", вы можете позвонить".метод getTime.")(
var ticks = someDate.getTime();С документация MDN, возвращаемое значение -
целочисленное значение, представляющее количество миллисекунд с 1 января 1970 года 00:00: 00 UTC (Unix Epoch).
расширение принятого ответа, как почему - это.
Javascript
new Date().getTime() or Date.now()вернет количество миллисекунд, прошедших отmidnight of January 1, 1970.в .NET ( source under
Remarksразделы)тип значения DateTime представляет даты и время со значениями в диапазоне от 00: 00:00 (полночь), 1 января 0001 Anno Domini (Common Era) до 11: 59: 59 вечера, 31 декабря 9999 г. н. э. (C. E.) в григорианском языке календарь.
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); }
Comments