2014-05-19 4 views
0

두 개의 열 (날짜 및 닫기)이 포함 된 json 파일을 읽으려고합니다. Json 파일의 날짜는 유닉스 형식이다. 나는 그들을 우표로 변환하려고합니다. 이d3.js를 사용하여 유닉스 타임 스탬프에서 iso 형식으로 타임 스탬프로 변환

[{"date":"\/Date(1397602800000+0100)\/","close":17}, 
    {"date":"\/Date(1398207600000+0100)\/","close":17}, 
    {"date":"\/Date(1398639600000+0100)\/","close":1}, 
    {"date":"\/Date(1398726000000+0100)\/","close":1}, 
    {"date":"\/Date(1398898800000+0100)\/","close":3}, 
    {"date":"\/Date(1399071600000+0100)\/","close":12}] 

내 변환 코드는 세 단계로 나누어 져 내 JSON 파일 첫째 var에 날짜를 받고있다. 그런 다음 "부분 문자열"기능을 사용하여 필요한 날짜 부분 만 자릅니다. 마지막으로 밀리 초에서 초로 시간을 변환하기 위해 1000을 곱하십시오. 완료 후 d3.time.format.iso.parse 형식으로 날짜를 구문 분석합니다. 이 내 코드

d3.json("data.json", function(error, data) { 
    data.forEach(function(d) { 

// Convert unix date format to regular format 
var dc 
    dc = d.date.substring(6, 24) 

    //substring dc Console 
    console.log(dc) 

    //convert and multiply it in 1000 to convert the time from milliseconds to seconds 
    dc = Date (dc*1000) 

    //convert and seconds dc Console 
    console.log(dc);  

    //parsing the date to iso format 
    dc = parseDate(dc) 
    console.log(dc);  
d.close = +d.close; 

    }); 
    // parse format 
    ParseDate=d3.time.format.iso.parse 

변환 부분이 작동하지 않는 것입니다. substring dc console이 올바르게 작동합니다. 그러나 // convert 및 seconds dc 콘솔은 유닉스 날짜를 변환하지 않습니다. 내 노트북의 데이트를 출력하고, 현재 데이트를 출력합니다. (date.now) ... 뭐가 잘못 됐니? 도와 줘?

답변

0

나는 유닉스 타임 스탬프 (10)의 길이를 가지고, 당신은 당신이 필요로하는 것보다 훨씬 더 긴 문자열을 SUBSTR 생각, 그래서 대신

dc = d.date.substring(6, 24); 

의 자바 스크립트 날짜 개체

dc = d.date.substring(6, 16) 
dc = parseInt(dc) ;// to ensure a correct value 

그리고이 내장되어 시도 기능 toISO, 시도 :

dc = Date (dc*1000) 
console.log(dc.toISOString()); 

UPDATE :

var log = [{"date":"\/Date(1397602800000+0100)\/","close":17}, 
    {"date":"\/Date(1398207600000+0100)\/","close":17}, 
    {"date":"\/Date(1398639600000+0100)\/","close":1}, 
    {"date":"\/Date(1398726000000+0100)\/","close":1}, 
    {"date":"\/Date(1398898800000+0100)\/","close":3}, 
    {"date":"\/Date(1399071600000+0100)\/","close":12}] ; 


log.forEach(function(d) 
{ 
    var dc = d.date.substring(6, 16); 
    var dc = parseInt(dc) * 1000; 
    var myDate =new Date(dc); 
    console.log (dc); 
    console.log(myDate.getTime()); // dc is equal with myDate.getTime() so it's extracted correctly 
}); 
+0

아니요, 여전히 같습니다. dc = Date (dc * 1000)는 "Date"가 현재 날짜를 반환합니다 !!! 이 경우에 사용되는 다른 함수가 있습니까? – Sudgey

관련 문제