Convert a mySQL date to Javascript date

Viewed 67498

What would be the best way to convert a mysql date format date into a javascript Date object?

mySQL date format is 'YYYY-MM-DD' (ISO Format).

15 Answers

Now javascript can do this easily, no more moment.js or similar :) readable to humans, and the desired language.

var MySQLDate = '2021-01-26 16:35:00';

var JavaScriptDate1 = new Date(MySQLDate).toLocaleDateString(
      'es-CO',
      {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour12: true,
        hour: '2-digit',
        minute: '2-digit'
      }
);
var JavaScriptDate2 = new Date(MySQLDate).toLocaleDateString(
      'ko-KR',
      {
        year: 'numeric',
        month: 'long',
        day: 'numeric',
        hour12: false,
        hour: '2-digit',
        minute: '2-digit'
      }
);

console.log(JavaScriptDate1);
console.log(JavaScriptDate2);

See more info here

maybe something like?

[Y,M,D,h,m,s] = '2020-11-06 16:00:00'.split(/[- :]/)

Here's the function to convert the time format.

function sqlToJsDate(sqlDate){
    //sqlDate in SQL DATETIME format ("yyyy-mm-dd hh:mm:ss.ms")
    var sqlDateArr1 = sqlDate.split("-");
    //format of sqlDateArr1[] = ['yyyy','mm','dd hh:mm:ms']
    var sYear = sqlDateArr1[0];
    var sMonth = (Number(sqlDateArr1[1]) - 1).toString();
    var sqlDateArr2 = sqlDateArr1[2].split(" ");
    //format of sqlDateArr2[] = ['dd', 'hh:mm:ss.ms']
    var sDay = sqlDateArr2[0];
    var sqlDateArr3 = sqlDateArr2[1].split(":");
    //format of sqlDateArr3[] = ['hh','mm','ss.ms']
    var sHour = sqlDateArr3[0];
    var sMinute = sqlDateArr3[1];
    var sqlDateArr4 = sqlDateArr3[2].split(".");
    //format of sqlDateArr4[] = ['ss','ms']
    var sSecond = sqlDateArr4[0];
    var sMillisecond = sqlDateArr4[1];
     
    return new Date(sYear,sMonth,sDay,sHour,sMinute,sSecond,sMillisecond);
}```

Reference:[DeepInTheCode][1]


  [1]: https://deepinthecode.com/2014/08/05/converting-a-sql-datetime-to-a-javascript-date/

You can get MySQL date (yyyy-mm-dd) like this easy javascript

to get Date and time

var date = new Date();    
date.toISOString().slice(0, 19).replace('T', ' '); 

to get only date yyyy-mm-dd

var date = new Date();
date.toISOString().slice(0, 10).replace('T', ' '); 

if you notice any change to date value add your time zone for example

var date = new Date(date+" GTM");  //for GMT time zone 

Adapt it with your code

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

TypeScript with proper typing (no implicit string/int conversation):

/**
 * @example
 * mysql_date_to_js_date("2019-12-31");
 */
export function mysql_date_to_js_date(mysql_date: string) {
    var parts = mysql_date.split("-");
    if (parts.length != 3) {
        return undefined;
    }
    var year = parseInt(parts[0]);
    var month = parseInt(parts[1]) - 1; // months indexes are zero based, e.g. 9 == Octobre
    var day = parseInt(parts[2]);
    return new Date(year, month, day);
}
Related