2016-01-13 2 views
0

мне удалось взломать вместе некоторые JavaScript, чтобы мои даты появления, как я хочу:

$(document).ready(function() { 
    $('span.date').each(function() { 
     var dateFormat = $(this).text() 
     var dateFormat = $.datepicker.formatDate('dd-M-yy', new Date(dateFormat)); 
     $(this).html(dateFormat + "<br>"); 
    }); 
}); 

Однако в настоящее время отображается день дата 1 в прошлом. Google говорит мне, что это связано с тем, что время/дата, установленное в UTC в моей базе данных, не имеет часовой пояс (только поле даты, время не важно).

Из того, что я могу сказать, мне требуется смещение для Date(), но я не могу понять, как это сделать с этим текущим макетом.

У меня есть jsfiddle здесь: http://jsfiddle.net/ytaLvp5y/

Как можно видеть в jsfiddle, дата "2015-12-31" показывает, как "30-Dec-2015" при использовании «дд-M -yy ".

Некоторые примеры, которые я нашел на StackExchange того, что я пытался (иметь в виду, у меня не очень много нет опыта JavaScript):

d.setTime(d.getTime() + d.getTimezoneOffset()*60*1000); 

, а также

var dateFormat = $.datepicker.formatDate('dd-M-yy', new Date(dateFormat)*60*1000); 

И много подобных вариаций между которыми ни одна из них не работает (все они разделяют формат даты вместе или производят NaN-undefined-NaN). Я думаю, что я на правильном пути с TimezoneOffset() * 60 * 1000, я просто не могу понять, куда он идет.

Может ли кто-нибудь помочь мне указать направление в правильном направлении? Спасибо в продвинутом для любых ответов!

ответ

1

Сначала вы получите объект UTC Дата

var date = new Date("2015-12-31"); 

Следующая найти смещение для локального TZ

var offset = date.getTimezoneOffset() * 60 * 1000; // milliseconds 

Теперь добавим, что к представлению миллисекунды для первоначальной даты и сделать новую дату.

var myDate = new Date(date.getTime() + offset); 

Затем примените формат

$.datepicker.formatDate("dd-M-yy", myDate); 
+0

Все отлично и хорошо на бумаге, но как бы это применить к $ ('span.date'). Каждая (функция() {вар DateFormat = $ (это) .text() ?? – cwaddilove

+0

'$ (this) .text()' is '2015-12-31' правильно? Просто замените. – Jasen

+0

Спасибо, что дали мне достаточно подробностей, чтобы заставить меня узнать :) - Обновить http: //jsfiddle.net/ytaLvp5y/1/ (я считаю, что это, в конечном счете, то, о чем вы упоминали, все равно работает) – cwaddilove

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