Как конвертировать JavaScript date object в ТИКи



Как конвертировать JavaScript date object в ТИКи? Я хочу использовать тики, чтобы получить точную дату для моего приложения C# после синхронизации данных.

374   6  

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

    Ничего не найдено.