2015-03-09 5 views
0

Я пытаюсь показать timeago, что вопрос был задан в моем проекте. В моей базе данных есть столбцы Datetime «перечисленные». Когда пользователь отправляет вопрос, я вставляю вопрос с UTC DateTime.Moment.js + Livestamp время назад по UTC Дата Время от сервера

У клиента есть как Livestamp.js, так и moment.js для отображения времени, на который был задан вопрос.

Код:

var then = moment(listed).unix(); // convert to unix time 

, а затем:

s += "</td><td><span data-livestamp='" + then + "'></span>"; 

Проблема заключается в том, что он не показывает timeago по назначению, больше часа назад.

Пример возвращаемого строки даты с сервера:

2015-03-09T09:16:41 

Мне нужен способ для livestamp, чтобы показать timeago рассматривает UTC время на основе даты-времени с сервера и принимая во внимание местное время UTC, но я не знаю, как этого добиться.

Примечание: сервер не находится в том же месте, что и клиенты (посетители), совершенно очевидно.

Использование: MySQL, .NET/C# 4.5, JQuery/JavaScript

+0

Вы используете веб-форму ASP.NET или mvc? – Bellash

+0

@Bellash веб-формы –

+0

см. Мой ответ ниже: var localDate = new Дата (новая дата ('UTC DATE'). GetTime() - (новая дата(). GetTimezoneOffset() * 60000)); ' – Bellash

ответ

2

У меня был подобный вопрос два года назад, и вот как я ее решил:

var localtime = new Date(new Date(listed).getTime() - 
       (new Date().getTimezoneOffset() * 60000)); 


var then = moment(localtime).unix(); 

правок: Пробовал это

var localDate = new Date(new Date('2015-03-09T13:56:41').getTime() - 
          (new Date().getTimezoneOffset() * 60000)); 


var then = moment(localDate).unix(); 
document.getElementById("demo").innerHTML = 
       "Made it : <span data-livestamp='" + then + "'></span>" ; 

    //Results: "Made it : 5 minutes ago" as I'm in a +1 timezone 
+0

Он показывает" в 25 минут назад "вместо" 2 часа назад ". –

+0

Я пробовал это сам, и он работает: с строкой даты! Если вы получаете неправильную рабочую среду, это может быть из-за смещения между вашей базой данных и сервером приложений. Убедитесь, что «перечисленные» остаются неизменными между серверами баз данных и приложений и проверяют их в вашем браузере. – Bellash

+0

Созданная дата +2 часа, как в моем +2 часовом поясе. Это означает, что localdate установлен в 10:00, когда мое время составляет 8:00. Это то, что я вижу «через 2 часа» (в будущем) в результатах. Время отображается правильно, когда я делаю moment.utc (указано) .toDate(); а затем moment.utc(). unix(). Хотя я не уверен, что это не так. Сервер и сервер MySQL являются локальными, поэтому время как и должно быть. –

Смежные вопросы