2013-04-14 3 views
1

전적으로 자바 스크립트을 처음 사용했으며 milliseconds에서 Date을 만드는 데 문제가 있습니다.자바 스크립트에서 날짜()를 생성하는 중 오류가 발생했습니다.

이 코드를 가지고 :

function (result) { 

    alert("Retreived millis = " + result.created); 
    //Prints "Retrieved millis = 1362927649000" 

    var date = new Date(result.created); 
    alert("Created Date = " + date); 
    //Prints "Created Date = Invalid Date" 

    var current = new Date(); 
    var currentDate = new Date(current.getTime()); 
    alert("Current Date = " + currentDate); 
    //Prints "Current Date = Sun Apr 14 2013 12:56:51 GMT+0100" 
} 

마지막 경고 Date의 생성이 작동하지만, 검색 millis이 정확하기 때문에 첫 번째 Date가 제대로 만들어지지 않는 이유를 이해하지 않는 것이 증명 ... 그리고 내가 자바에서 이해할 수있는 것은 데이터 형이 아니기 때문에, 검색된 millisstring 또는 long인데 실패하지 않을 수 있습니까?

답변

2

나는 result.created이 (가) 문자열입니다. Date 생성자는 문자열을 받아들이지 만 해당 문자열이 다른 형식이 될 것으로 예상하므로 실패합니다.

이 그것을 분류한다. (예를 들면, new Date("1362927649000") 잘못된 날짜에 결과지만, new Date(1362927649000)은 우리에게 Sun Mar 10 2013 15:00:49 GMT+0000 (GMT)을 제공) (첫 번째 숫자로 변환하여, 그래서 생성자는 대기원 이후의 밀리 초를 다루는 알고있다) :

var date = new Date(parseInt(result.created, 10)); 
+0

문제가 해결되었습니다. 나는 정수 또는 문자열을 전달하면 Javascript가 불평하지 않을 것이라고 생각했다 ... 나는 완전히 이것에 익숙하다고 말했다 ... 고맙습니다. – MikO

+1

@MikO : JavaScript는 자동으로 문자열 - 숫자 변환을 많이하지만, 'Date'생성자가 문자열이나 숫자를 받아들이므로 자동 변환을 트리거하지 않습니다. 그 대신, 주어진 형식으로 문자열을 구문 분석하거나 숫자를 사용하여 분기 및 분기를 찾습니다. * only * 함수가 숫자를 허용하면, 확률이 높으면 문자열을 자동으로 자동 변환합니다 ('Math.max (10, "100")'은'100 '을 반환합니다). 'Date' 생성자가 아닙니다. :-) –

+0

OK, 나는 그것을 지금 분명히 이해하고있다. Thanx는 솔루션과 추가 정보를 제공합니다. – MikO

관련 문제