답변:
여기에 주어진 답변 중 일부는 너무 복잡하거나 작동하지 않습니다 (적어도 모든 브라우저에서). 한 단계 뒤로 물러 나면 MySQL 타임 스탬프에 Date()
생성자에 필요한 인수와 동일한 순서로 각 시간 구성 요소가 있음을 알 수 있습니다 .
필요한 것은 문자열에서 매우 간단한 분할입니다.
// Split timestamp into [ Y, M, D, h, m, s ]
var t = "2010-06-09 13:12:01".split(/[- :]/);
// Apply each element to the Date function
var d = new Date(Date.UTC(t[0], t[1]-1, t[2], t[3], t[4], t[5]));
console.log(d);
// -> Wed Jun 09 2010 14:12:01 GMT+0100 (BST)
공정한 경고 : 이것은 MySQL 서버가 UTC 날짜를 출력한다고 가정합니다 (기본값이며 문자열의 시간대 구성 요소가없는 경우 권장 됨).
var d = new Date("2010-06-09 13:12:01");
. 흥미롭게도 Chrome에는 아무런 문제가 없습니다.
new Date(Date.UTC(...))
더 나은 것이지만 mysql은 utc를 사용한다고 가정합니다. 이것이 정답으로 간주되기 전에 고려됩니다.
뛰어난 Andy E 답변에 추가하기 위해 일반적인 사용법은 다음과 같습니다.
Date.createFromMysql = function(mysql_string)
{
var t, result = null;
if( typeof mysql_string === 'string' )
{
t = mysql_string.split(/[- :]/);
//when t[3], t[4] and t[5] are missing they defaults to zero
result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0);
}
return result;
}
이런 식으로 MySQL 날짜 / 시간 형식 "YYYY-MM-DD HH:MM:SS"
이나 짧은 형식 (날짜 만)을 지정 "YYYY-MM-DD"
하면 다음을 수행 할 수 있습니다.
var d1 = Date.createFromMysql("2011-02-20");
var d2 = Date.createFromMysql("2011-02-20 17:16:00");
alert("d1 year = " + d1.getFullYear());
new Date(Date.UTC(...))
다른 현명하게 사용해야 합니다 대답은 24 시간까지 잘못되었습니다 ...
나는 아무도 언급하지 않은 더 간단한 방법을 찾은 것 같습니다.
MySQL DATETIME 컬럼은 다음을 통해 유닉스 타임 스탬프로 변환 될 수 있습니다.
SELECT unix_timestamp(my_datetime_column) as stamp ...
신기원부터 밀리 초가 필요한 생성자를 사용하여 새로운 JavaScript Date 객체를 만들 수 있습니다. unix_timestamp 함수는 에포크 이후 초를 반환하므로 1000을 곱해야합니다.
SELECT unix_timestamp(my_datetime_column) * 1000 as stamp ...
결과 값을 사용하여 올바른 Javascript Date 객체를 인스턴스화 할 수 있습니다.
var myDate = new Date(<?=$row['stamp']?>);
도움이 되었기를 바랍니다.
최신 브라우저를위한 하나의 라이너 (IE10 +) :
var d = new Date(Date.parse("2010-06-09 13:12:01"));
alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time)
그리고 재미를 위해 이전 브라우저에서 작동하는 하나의 라이너가 있습니다 (이제 수정 됨).
new (Function.prototype.bind.apply(Date, [null].concat("2010-06-09 13:12:01".split(/[\s:-]/)).map(function(v,i){return i==2?--v:v}) ));
alert(d); // Wed Jun 09 2010 13:12:01 GMT+0100 (GMT Daylight Time)
최신 버전의 JavaScript는 ISO8601 형식의 날짜를 읽으므로 다음 중 하나를 수행하여 공백을 'T'로 변경하기 만하면됩니다.
#MySQL
select date_format(my_date_column,'%Y-%m-%dT%T') from my_table;
#PHP
$php_date_str = substr($mysql_date_str,0,10).'T'.substr($mysql_date_str,11,8);
//JavaScript
js_date_str = mysql_date_str.substr(0,10)+'T'+mysql_date_str.substr(11,8);
Marco의 솔루션에 더 추가하십시오. String 객체로 직접 프로토 타입을 만들었습니다.
String.prototype.mysqlToDate = String.prototype.mysqlToDate || function() {
var t = this.split(/[- :]/);
return new Date(t[0], t[1]-1, t[2], t[3]||0, t[4]||0, t[5]||0);
};
이 방법으로 직접 갈 수 있습니다 :
var mySqlTimestamp = "2011-02-20 17:16:00";
var pickupDate = mySqlTimestamp.mysqlToDate();
더 간단한 방법은 SQL 타임 스탬프 문자열입니다.
2018-07-19 00:00:00
Date ()가받는 가장 타임 스탬프 형식은 다음과 같으므로 "T"의 공백을 바꾸십시오.
var dateString = media.intervention.replace(/\s/g, "T");
"2011-10-10T14 : 48 : 00"
그런 다음 날짜 객체를 만듭니다.
var date = new Date(dateString);
결과는 날짜 객체입니다.
목 7 월 19 2018 00:00:00 GMT-0300 (호라 리오 파드 라오 데 브라질리아)
에서 앤디의 대답 , AngularJS와 용 - 필터
angular
.module('utils', [])
.filter('mysqlToJS', function () {
return function (mysqlStr) {
var t, result = null;
if (typeof mysqlStr === 'string') {
t = mysqlStr.split(/[- :]/);
//when t[3], t[4] and t[5] are missing they defaults to zero
result = new Date(t[0], t[1] - 1, t[2], t[3] || 0, t[4] || 0, t[5] || 0);
}
return result;
};
});
먼저, YMD 형식을 컴포넌트로 분할하고 다음 날짜 컴포넌트를 사용하여 MySQL의 YMD 날짜 형식을 JavaScript 형식으로 변환하기위한 JavaScript의 Date 오브젝트 (클래스)에 새로운 메소드 'fromYMD ()'를 제공 할 수 있습니다.
Date.prototype.fromYMD=function(ymd)
{
var t=ymd.split(/[- :]/); //split into components
return new Date(t[0],t[1]-1,t[2],t[3]||0,t[4]||0,t[5]||0);
};
이제 자신 만의 객체를 정의 할 수 있습니다 (JavaScript 세계의 기능) :
function DateFromYMD(ymd)
{
return (new Date()).fromYMD(ymd);
}
이제 MySQL 날짜 형식으로 날짜를 만들 수 있습니다.
var d=new DateFromYMD('2016-07-24');
Google의 빠른 검색은 다음을 제공했습니다.
function mysqlTimeStampToDate(timestamp) {
//function parses mysql datetime string and returns javascript Date object
//input has to be in this format: 2007-06-05 15:26:02
var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}
왜 이렇게하지 마십시오 :
var d = new Date.parseDate( "2000-09-10 00:00:00", 'Y-m-d H:i:s' );