Преобразовать дату 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>