Convert a mySQL date to Javascript date
What would be the best way to convert a mysql date format date into a javascript开发者_JAVA技巧 Date object?
mySQL date format is 'YYYY-MM-DD' (ISO Format).
Given your clarification that you cannot change the format of the incoming date, you need something like this:
var dateParts = isoFormatDateString.split("-");
var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2));
Original response:
Is there a reason you can't get a timestamp instead of the date string? This would be done by something like:
SELECT UNIX_TIMESTAMP(date) AS epoch_time FROM table;
Then get the epoch_time into JavaScript, and it's a simple matter of:
var myDate = new Date(epoch_time * 1000);
The multiplying by 1000 is because JavaScript takes milliseconds, and UNIX_TIMESTAMP gives seconds.
The shortest and fast method:
var mySQLDate = '2015-04-29 10:29:08';
new Date(Date.parse(mySQLDate.replace(/-/g, '/')));
mySqlDate
is in the format "yyyy-mm-dd".
var javaDate = new Date(mySqlDate);
This line of code works fine for me.
UNIX timestamp (milliseconds since the January 1, 1970) would be my preferred choice.
You can pass it around as an integer and use the JS setTime() method to make a JS Date object from it.
Stumbled on this looking to do exactly what the OP wanted, and used jhurshman answer so I +1'ed it, but it is incomplete as it will use 00:00:00 GMT-0500 (CDT)
for the time part as it is not passed to the date object (var jsDate).
In case anyone else is looking to create the full Javascript
date object
ex:
Sat Mar 29 2014 23:24:28 GMT-0500 (CDT)
Based on a MySQL DATETIME format
ex:
'9999-12-31 23:59:59'.
You will want to use the following:
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));
It will return in the browsers current timezone as you are creating the date object, but I would do the timezone conversion on the backend in most cases.
In AngularJS Way, Thanks to @Jonas Sciangula Street
.filter('toJSDate', function(){
return function (dateString) {
return new Date(Date.parse(dateString.replace('-','/','g')))
};
})
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(/[- :]/)
You can split the date '-' as separator and use this constructor:
var d = new Date(Y, M - 1, D);
Building onto Jhurisman's answer. If you would want to set the date's time as well use the following:
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]
);
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
While JS does possess enough basic tools to do this, it's pretty simple to use
/**
* 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>
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);
}
精彩评论