Angelika S Michel Ответов: 5

Как преобразовать C# DateTime.Клещи для объекта Date в JavaScript или jQuery?


Эй там,
таким образом, я получаю следующее значение ( которое действительно является C# DateTime.Тики ) 635556672000000000 к объекту даты в javascript?

Я уже довольно долго гуглил, но так и не смог найти ответ, который бы мне помог.

Так что я испытываю свою удачу здесь :)

Спасибо!

BillWoodruff

Разве посты вроде этого не помогают:

http://stackoverflow.com/a/10109071/133321

Angelika S Michel

Нет, потому что он не работает с DateTime.Тики и у меня нет доступа к серверному приложению.

Afzaal Ahmad Zeeshan

Анжелика, Билл сказал правду. Вы можете непосредственно передать эту сумму тиков конструктору Date() и создать клиентский JS-объект для указания даты и времени.

Angelika S Michel

Нет. Это не работает. Попробуйте сами.

var test= новая дата(635556672000000000);
тест
Неверная Дата

5 Ответов

Рейтинг:
40

Doug Vanderweide

Вам понадобится помощь Ан ASP.NET WebService / MVC / Web Form или что-то подобное, что может передать обратно в ваш JavaScript текущее время; либо через сам код страницы, либо через AJAX-запрос.

Вот некоторый код C#, который переводит целое число ТИКов в метку времени microtime:


DateTime someDate = new DateTime(635556672000000000); // or whatever variable has your ticks
Int32 unixTimestamp = (Int32)(someDate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
unixTimestamp = unixTimestamp * 1000;


Как только вы настроите что-то так, чтобы вы могли получить значение unixTimestamp из ASP.NET ресурс, просто вызовите его через jQuery или что-то подобное. Например, предположим, что вы создаете ASP.NET веб-обработчик с именем time.ashx, который выплевывает штамп микротайма в виде открытого текста:

var myTimestamp = new Date(); //set default date to now
$.get("http://www.example.com/time.ashx", function() { }).done(function(data) {
//update date with data from get request
myTimestamp = new Date(data);
});


Или что-то похожее. Суть в следующем: ASP.NET помощник для преобразования ТИКов в микротайм.


Angelika S Michel

Извините, но это подделка. UnixTimestamp-это не unix timestamp с *1000, и, как я уже сказал, У меня нет доступа к серверным приложениям.

Doug Vanderweide

Вы просили JavaScript. JavaScript использует микротайм, который является эпохой Unix в миллисекундах. GIYF.

Если у вас нет доступа к серверным приложениям, вы не можете делать то, что хотите.

Рейтинг:
2

Evgee

Я использую пакет ticks-to-date npm
https://www.npmjs.com/package/ticks-to-date


Рейтинг:
16

Dennis Baberich

Наверное, лучше поздно, чем никогда?

Вот ваше решение, полностью в js.

http://stackoverflow.com/questions/15486299/convert-c-sharp-net-datetime-ticks-to-days-hours-mins-in-javascript

Наслаждаться :-)


Рейтинг:
1

Doug Vanderweide

Подумав об этом немного, оказывается, что вы можете сделать математику, чтобы преобразовать Тики в микротайм только в JavaScript.

var ticks = 635556672000000000; 

//ticks are in nanotime; convert to microtime
var ticksToMicrotime = ticks / 10000;

//ticks are recorded from 1/1/1; get microtime difference from 1/1/1/ to 1/1/1970
var epochMicrotimeDiff = 2208988800000;

//new date is ticks, converted to microtime, minus difference from epoch microtime
var tickDate = new Date(ticksToMicrotime - epochMicrotimeDiff);


tickDate-это теперь дата, отраженная вашей меткой времени тиков.

http://msdn.microsoft.com/en-us/library/system.datetime.ticks%28v=vs.110%29.aspx[^]

Кроме того, подсказка: старайтесь быть более приятным, вы обнаружите, что люди более охотно помогают вам. Я, например, не собираюсь помогать вам снова.


Рейтинг:
1

Henk ter Harmsel

var ticks = 635556672000000000; 
 
//ticks are in nanotime; convert to microtime
var ticksToMicrotime = ticks / 10000;
 
//ticks are recorded from 1/1/1; get microtime difference from 1/1/1/ to 1/1/1970
var epochMicrotimeDiff = Math.abs(new Date(0, 0, 1).setFullYear(1));
 
//new date is ticks, converted to microtime, minus difference from epoch microtime
var tickDate = new Date(ticksToMicrotime - epochMicrotimeDiff);


Согласно этой странице (Метод JavaScript setFullYear() [^]) метод setFullYear возвращает "число, представляющее количество миллисекунд между объектом date и полуночью 1 января 1970 года"