Преобразовать дату mySQL в Javascript

Каким будет лучший способ конвертировать дату формата даты mysql в объект Date javascript?

Формат даты mySQL - "ГГГГ-ММ-ДД" (формат ISO).

Ответы

Ответ 1

Учитывая, что вы не можете изменить формат входящей даты, вам нужно что-то вроде этого:

var dateParts = isoFormatDateString.split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2));

Оригинальный ответ:

Есть ли причина, по которой вы не можете получить временную метку вместо строки даты? Это будет сделано следующим образом:

 SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;

Затем получите epoch_time в JavaScript, и это простой вопрос:

var myDate = new Date(epoch_time * 1000);

Умножение на 1000 происходит из-за того, что JavaScript занимает миллисекунды, а UNIX_TIMESTAMP дает секунды.

Ответ 2

Самый короткий и быстрый метод:

var mySQLDate = '2015-04-29 10:29:08';
new Date(Date.parse(mySQLDate.replace('-','/','g')));

Ответ 3

временная метка UNIX (миллисекунды с 1 января 1970 года) будет моим предпочтительным выбором.

Вы можете передать его как целое число и использовать JS setTime(), чтобы сделать из него объект JS Date.

Ответ 4

В Углярном пути, благодаря @Jonas Sciangula Street

.filter('toJSDate', function(){
        return function (dateString) {
            return new Date(Date.parse(dateString.replace('-','/','g')))
        };
    })

Ответ 5

mySqlDate находится в формате "yyyy-mm-dd".

var javaDate = new Date(mySqlDate);

Эта строка кода отлично работает для меня.

Ответ 6

Вы можете разделить дату '-' как разделитель и использовать этот конструктор:

var d = new Date(Y, M - 1, D);

Ответ 7

Наткнулся на это, пытаясь сделать именно то, что хотел OP, и использовал jhurshman, чтобы ответить, так что я + 1 сделал его, но он неполный, так как он будет использовать 00:00:00 GMT-0500 (CDT) для временной части, поскольку она не передается на дату object (var jsDate).

Если кто-то еще хочет создать полный объект Javascript ,

Пример:

Sat Mar 29 2014 23:24:28 GMT-0500 (CDT)

На основе MySQL DATETIME format

Пример:

'9999-12-31 23:59:59'.

Вам понадобится следующее:

var dateParts = isoFormatDateString.split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0, 2), dateParts[2].substr(3, 2), dateParts[2].substr(6, 2), dateParts[2].substr(9, 2));

Он вернется в текущий часовой пояс браузеров при создании объекта даты, но в большинстве случаев я бы сделал преобразование часового пояса на бэкэнд.

Ответ 8

Основываясь на ответе Джуризмана. Если вы хотите также установить дату, используйте следующее:

var dateParts = mysqlDate;
var timeParts = dateParts[2].substr(3).split(":");

var jsDate = new Date(
                dateParts[0],
                dateParts[1] - 1,
                dateParts[2].substr(0,2),
                timeParts[0],
                timeParts[1],
                timeParts[2]
            );

Ответ 9

Хотя JS действительно обладает достаточными базовыми инструментами для этого, довольно просто использовать

/**
 * Ashu, You first need to create a formatting function to pad numbers to two digits…
 **/
function twoDigits(d) {
    if(0 <= d && d < 10) return "0" + d.toString();
    if(-10 < d && d < 0) return "-0" + (-1*d).toString();
    return d.toString();
}


Date.prototype.toMysqlFormat = function() {
    return this.getUTCFullYear() + "-" + twoDigits(1 + this.getUTCMonth()) + "-" + twoDigits(this.getUTCDate()) + " " + twoDigits(this.getUTCHours()) + ":" + twoDigits(this.getUTCMinutes()) + ":" + twoDigits(this.getUTCSeconds());
};


var date = new Date();

document.getElementById("date").innerHTML = date;
document.getElementById("mysql_date").innerHTML = date.toMysqlFormat();
console.log(date.toMysqlFormat());
Simple date:<div id="date"></div>

Converted Mysql Fromat: <div id="mysql_date"></div>