Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.05.2015, 10:25
Новичок на форуме
Отправить личное сообщение для WishMaster Посмотреть профиль Найти все сообщения от WishMaster
 
Регистрация: 28.05.2013
Сообщений: 8

Date из timestamp определяется неправильно
Привык к разной магии в javascript, но это уже за гранью добра и зла. Проблема в следующем - пишу что-то вроде расписания, в цикле создаются timestamp с интервалом, и распихиваются в объект в виде [дата][timestamp]. Все идет хорошо, но когда время в timestamp переходит через 22.59, дата у него почему-то определяется как следующий день. Можно конечно сделать костыль и не постить здесь вопросы, но мне интересно, почему оно именно так работает)
Вот кусок кода, который заполняет объект timestamp'aми:
var days = {};
        var current_date = new Date(RecordInEvent.current_time * 1000); //RecordInEvent.current_time - timestamp php текущего времени на сервере 
        var start_time = Math.floor(new Date(current_date.getFullYear(), current_date.getMonth(), current_date.getDate(), 0, 0, 0, 0).getTime() / 1000); //стартовое время - 00.00 текущего дня
        for (var i = start_time; i < start_time + RecordInEvent.time_to_show; i += RecordInEvent.record_interval) {
            var date = new Date(i * 1000);
            if (!days[date.toLocaleDateString()]) {
                days[date.toLocaleDateString()] = {};
            }
            days[date.toLocaleDateString()][date.toTimeString()] = (RecordInEvent.recorded_time[i] || i < RecordInEvent.current_time + RecordInEvent.record_delay) ? false : true;
        }

P.S. timestamp нужен для связки js + php + MySQL, к нему привязываются данные в базе. Если возможен другой подход, более правильный, с удовольствием выслушаю)
Для наглядности сделал скрин объекта, в котором находятся данные

Последний раз редактировалось WishMaster, 04.05.2015 в 10:41.
Ответить с цитированием
  #2 (permalink)  
Старый 04.05.2015, 10:51
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,586

Если уж юзаете date.toLocaleDateString то и date.toLocaleTimeString юзайте. Но вообще toLocale от браузера к браузеру бажные, лучше вручную дату составлять.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 04.05.2015, 11:09
Новичок на форуме
Отправить личное сообщение для WishMaster Посмотреть профиль Найти все сообщения от WishMaster
 
Регистрация: 28.05.2013
Сообщений: 8

Такое решение и правда работает) Спасибо. И кажется, я понял теперь, в чем вся соль была. Из-за разницы временных поясов время отображалось неправильно, timestamp привязан к какому-то конкретному временному поясу, а toLocale берет настройки из браузера. Я во время тестов во время вывода времени не использовал toLocale, тогда как дата этому времени была присвоена с использованием toLocale, поэтому и возникала разница в час.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
timestamp to date Fedya Общие вопросы Javascript 2 11.09.2015 11:22
Помогите разобраться с объектом Date() tur10 Общие вопросы Javascript 2 27.03.2015 16:45
Не правильно оторбражается меcяц в Date() oxxy Общие вопросы Javascript 6 22.01.2014 16:01
Время,не правильное отображение скриптов Visual Общие вопросы Javascript 0 29.10.2013 19:12
Обновление объекта Date (сокращение кода) HJ90 Элементы интерфейса 4 07.09.2013 20:58