Временная метка Javascript на сегодняшний день

Может ли кто-нибудь помочь мне с этим, это сводит меня с ума. Я начинаю с Javascript и впервые столкнулся с проблемой дат.

Я уже спрашивал об этом, но мне никто не ответил: json с проанализированным временем или отметка времени для amchartss

В основном у меня есть этот вызов XHR.

 getJSON = function(url) {
    var xhr = new XMLHttpRequest();
    xhr.open('get', url, true);
    xhr.responseType = 'json';

    xhr.onload = function() {
        var status = xhr.status;
        if (status == 200) {
            chartLoad(xhr.response);
            console.log(xhr.response);
        } else {
            console.log("oh shit");
        }
    };
    xhr.send();
};

Я получаю в ответ здесь файл JSON с меткой времени, как я могу преобразовать все метки времени в дату ГГГГ-ММ-ДД ЧЧ: мм.

Раньше вместо временных меток у меня была строка даты, преобразованная непосредственно на сервере, таким образом, мне не нужно было выполнять преобразование на стороне клиента, но этот способ работал только в Chrome.

ПОМОЩЬ!


person Jack    schedule 15.05.2014    source источник


Ответы (3)


Хотя в JavaScript нет собственного метода date.format, вы можете создать свой собственный для одноразовых реализаций. В вашем случае что-то вроде:

var newDate = new Date(myTimeStamp);

var outDate = newDate.getFullYear()+"-"+(newDate.getMonth()+1)+"-"+newDate.getDate()+" "+newDate.getHours()+":"+newDate.getMinutes();

Для сегодняшней даты, которая будет выведена: 2014-5-15 16:7 Обратите внимание на +1 для getMonth, который начинает отсчет с 0. Возможно, потребуется дополнительная возня, если вы хотите, чтобы значения всегда содержали две цифры (т.е. ведущие нули в одиночных цифрах)

Сделать это в обработчике загрузки xhr можно примерно так:

           xhr.onload = function (e) {
                if (this.status == 200) {
                    var blob = this.response;

                    var img = document.createElement('img');
                    img.onload = function (e) {
                        window.URL.revokeObjectURL(img.src); // Clean up after yourself.
                    };
                    img.src = window.URL.createObjectURL(blob);
                    document.body.appendChild(img);

                    var myTimeStamp = e.timeStamp;
                    //I would probably want to put this date code
                    //in a separate function somewhere
                    var newDate = new Date(myTimeStamp);
                    var outDate = newDate.getFullYear()+"-"+(newDate.getMonth()+1)+"-"+newDate.getDate()+" "+newDate.getHours()+":"+newDate.getMinutes();
                    var div = document.createElement('div');
                    div.innerHTML = outDate;
                    document.body.appendChild(div);
                }
            };
person Steve Mc    schedule 15.05.2014
comment
Понятно, еще один вопрос, как мне применить это ко всем временным меткам из xhr? - person Jack; 15.05.2014
comment
Я думаю, что я бы обернул это в функцию, а затем вызвал бы ее в каждом обработчике onreadystatechange. Это то, что вы имели ввиду? - person Steve Mc; 15.05.2014
comment
@Jack или обработчик загрузки в вашем случае. - person Steve Mc; 15.05.2014
comment
@ Джек, или вы имеете в виду извлечение значения timeStamp из события загрузки? - person Steve Mc; 15.05.2014
comment
Я имел в виду, нужно ли мне делать цикл foreach или есть другой способ? Спасибо. - person Jack; 16.05.2014
comment
@Jack xhr.onload следует вызывать для каждого вызова xhr, который вы делаете на сервер, поэтому вам не нужен цикл. Я предполагаю, что вы делаете несколько вызовов xhr на сервер для получения активов. Возможно, именно эти вызовы нужно зацикливать? - person Steve Mc; 16.05.2014
comment
На самом деле я сделал отдельную функцию, которая преобразует метку времени в дату, но я не понимаю, есть ли у меня ответ json, например [{timestamp,..},{timestamp,..},{timestamp, ..},{timestamp,.. }]. Нужно ли мне делать foreach, или временная метка будет анализироваться непосредственно в xhr.onload, как в вашем примере? - person Jack; 16.05.2014
comment
давайте продолжим это обсуждение в чате - person Steve Mc; 16.05.2014

Мне нравится использовать moment.js для синтаксического анализа и форматирования даты и времени:

http://momentjs.com/

Код заканчивается так:

moment(some_timestamp).format('YYYY-MM-DD HH:mm')
person Dan Smolinske    schedule 15.05.2014
comment
Я предпочитаю делать это на ванильном JS, так я лучше учусь :) - person Jack; 15.05.2014

этот урок может прояснить ситуацию для вас :)

http://www.amcharts.com/tutorials/time-series-chart-the-great-advantages-of-parsing-dates/

person Maertz    schedule 16.05.2014
comment
Решено, но я буду иметь это в виду для дальнейшего использования :) Спасибо! - person Jack; 16.05.2014