2016-06-09 4 views
0

나는 PHP에서 검색 한 변수가 있으며 activity.ActivityDate이라는 변수에 저장되어 있습니다. 나는문자열 날짜를 날짜 객체로 변환

console.log(activity.ActivityDate); 

을 수행 할 때이 날짜 객체로 전환 할 수있는 유효한 형식 인 14/06/2016를 출력합니다. 하지만 내가 할 때

d = new Date(activity.ActivityDate); 
console.log(d); 

나는 잘못된 날짜를 얻습니다. 그러나 내가 할 때

e = new Date('14/06/2016'); 
console.log(e); 

나는 적당한 날짜 객체를 얻는다.

activity.ActivityDate 문자열에 문제가 있습니까? 아니면 적절한 문자열로 바꾸는 방법이 있습니까?

+1

어떻 : 예

'새로운 D = 일 (activity.ActivityDate.toString())은'' – Hackerman

+1

날짜의 날짜 열()는'생성자 기대 특정 형식이며, broswer에 의존 할 수 있습니다. 예를 들어 'MM/DD/YYYY'는 Chrome에서는 정의되어 있지 않지만 'DD/MM/YYYY'는 정의되어 있습니다. 문자열의 값을 분할하고 'new Date (year, month [, day [...]')의 해당 필드에 정수로 입력하는 것이 가장 좋습니다. –

+0

@Hackerman은 여전히 ​​유효하지 않은 날짜가되었습니다 – Lester

답변

3

다른 브라우저는 MDN에서 언급 한 바와 같이 다르게는 날짜 열을 구문 분석 Date() 생성자를 사용하여 낙심의 datestrings을 구문 분석 할 수 있습니다. 귀하의 경우에는 형식이 DD/MM/YYYY이지만 브라우저가 MM/DD/YYYY 일 것으로 예상됩니다.

참고 : Date 생성자 (및 Date.parse와 동일)의 날짜 문자열 구문 분석은 브라우저의 차이 및 불일치로 인해 사용하지 않는 것이 좋습니다.

가장 좋은 것은 그래서 "/"에 의해 유출 당신의 문자열로 할 수있는 모든 브라우저에서 작동하고 Date(year, month, day) 생성자의 생성자 형식을 사용 정수로 숫자를 변환 할 할 수 있습니다.

var date = '14/06/2016'; 
 
var items = date.split('/'); 
 
var day = +items[0];   // Note +(item) means convert to interger 
 
var month= +(items[1] - 1);  // month goes from 0-11 rather than 1-12. 
 
var year = +items[2]; 
 
e = new Date(year, month, day); 
 
console.log(e);