web-dev-qa-db-fra.com

Convertir une date MySQL en date Javascript

Quel serait le meilleur moyen de convertir une date au format date mysql en un objet Date javascript?

le format de date mySQL est 'AAAA-MM-JJ' (format ISO). 

18
Mike Valstar

Étant donné que vous avez précisé que vous ne pouvez pas modifier le format de la date entrante, vous avez besoin de quelque chose comme ceci:

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

Réponse originale:

Y a-t-il une raison pour laquelle vous ne pouvez pas obtenir d'horodatage au lieu de la chaîne de date? Cela se ferait par quelque chose comme: 

 SELECT UNIX_TIMESTAMP(date) AS Epoch_time FROM table;

Ensuite, introduisez Epoch_time dans JavaScript et c’est une simple question de:

var myDate = new Date(Epoch_time * 1000);

La multiplication par 1000 est due au fait que JavaScript prend des millisecondes et que UNIX_TIMESTAMP donne des secondes.

42
jhurshman

La méthode la plus courte et rapide:

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

L'horodatage UNIX (millisecondes depuis le 1er janvier 1970) serait mon choix préféré.

Vous pouvez le transmettre sous forme d’entier et utiliser la méthode JS setTime () pour en faire un objet Date JS.

2
Ben S

À AngularJS Way, grâce à la rue @Jonas Sciangula

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

mySqlDate est au format "aaaa-mm-jj".

var javaDate = new Date(mySqlDate);

Cette ligne de code fonctionne bien pour moi.

1
Sibi

Je suis tombé sur cette recherche pour faire exactement ce que le PO voulait, et j'ai utilisé la réponse jhurshman pour que je l'aie + 1, mais elle est incomplète car elle utilisera 00:00:00 GMT-0500 (CDT) pour la partie heure car elle n'est pas passée à l'objet date (var jsDate) .

Si quelqu'un d'autre cherche à créer l'objet Javascriptdate complet

ex:

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

Basé sur un format MySQL DATETIME

ex:

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

Vous voudrez utiliser les éléments suivants:

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));

Il retournera dans le fuseau horaire actuel du navigateur lorsque vous créez l'objet de date, mais dans la plupart des cas, je ferais la conversion du fuseau horaire dans le backend.

1
MattSizzle

Construire sur la réponse de Jhurisman. Si vous souhaitez également définir l'heure de la date, utilisez les éléments suivants:

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]
            );
0
bicycle

Vous pouvez diviser la date '-' en tant que séparateur et utiliser ce constructeur:

var d = new Date(Y, M - 1, D);
0
user180100
function getJsDate(sqlDate){
    var returnValue;
    var timeString="00:00:00";
    try{
        var dateArray=sqlDate.trim().split(" ");
        var dateString=dateArray[0];
        if(dateArray.length>1){timeString=dateArray[1];}
        console.log(timeString);
        var yyyymmddArray=dateString.trim().split("-");
        var hhmmssArray=timeString.trim().split(":");
        returnValue = new Date(yyyymmddArray[0], (yyyymmddArray[1]-1), yyyymmddArray[2], hhmmssArray[0], hhmmssArray[1], hhmmssArray[2]);
    }catch(err){
        console.log("Error: "+ err.message);
    }
    return returnValue;
}
0
Nirmal Gurjar

Alors que JS possède assez d'outils de base pour le faire, c'est assez simple à utiliser

/**
 * 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>

0
Ashish Gupta