2013-07-01 1 views
1

데이터 객체를 JSON으로 변환하고 JSON.stringifyJSON.parse으로 다시 변환합니다.JS : 날짜를 문자열로 변환하는 버그

이 어디 라인 SII 모든 장치에서하지만 삼성 갤럭시에, 좋은 작품 :

1973-07-01T10 : 49 :

console.log(jsonObj.gebDat+"::"+new Date(jsonObj.gebDat)); 

내가 출력을 얻을 25.134 Z :: 유효하지 않은 날짜

this answer과 똑같이 구현하고 있으며 대부분의 장치에서 작동합니다. 내가 뭔가 잘못하고 있는거야 ??

UPDATE 질문을 명확히합니다. 문자열 호출을 만듭니다.

var stringToSave = JSON.stringify({gebDat: dataclass.gebDat, <here are some more variables>}); 

내가 저장합니다. 나중에 내가

console.log(jsonObj.gebDat+"::"+new Date(jsonObj.gebDat)); 
this.gebDat = new Date(jsonObj.gebDat); 

로그 나에게 잘못된 날짜를 제공과 함께 (그냥 라인 전에 로그를 호출) 다시는 내 날짜를 설정하려고 다음

var jsonObj = JSON.parse(stringToSave); 

함께 문자열을로드하고 구문 분석 위와 같이 표시하고 날짜를 나타낼 때는 01.07.1973

+1

Galaxy SII는 다른 기기와 동일한 Android 버전입니까? – Bigood

+0

@Bigood 아니요, Galaxy SII는 Android 버전 2.3.3입니다. – Daniel

+0

다른 시간대로 날짜를 처리합니까? 다른 방법으로는 생성자의 형식을'new date (year, month [, date [, hours [, minutes [, seconds [, ms]]]])' – sabithpocker

답변

1

대신에 01.07.1973을 표시합니다. 날짜 문자열 형식은 구현에 따라 다릅니다. 날짜를 저장할 때 항상 타임 스탬프를 사용하는 것이 좋습니다.

var timestamp = Date.parse(new Date());//1372675910000 

이제 날짜를 다시 저장된 타임 스탬프를 사용하여 나중에

var date = new Date(1372675910000);//Mon Jul 01 2013 16:21:50 GMT+0530 (India Standard Time) 

2.For이 각기 다른 시간대를 처리 해달라고 경우에 대비하여 현재의 솔루션에서 간단한 전환,

var dateString = jsonObj.getDat.substring(0,23); 
var datePart = dateString.split('T')[0].split('-'); 
var timePart = dateString.split('T')[1].split(/[:.]/); 
var DateOj = new Date(datePart[0], datePart[1], datePart[2], timePart[0], timePart[1], timePart[2]); 

귀하의 업데이트를 참조하여 1을 분명히하겠습니다.

var stringToSave = JSON.stringify({gebDat: Date.parse(dataclass.gebDat), <here are some more variables>}); 

var jsonObj = JSON.parse(stringToSave); 

console.log('timestamp :' + jsonObj.gebDat);//1372680083000 
console.log(new Date(jsonObj.gebDat));//Mon Jul 01 2013 17:31:23 GMT+0530 (India Standard Time) 
+0

[Date.parse()] (http://www.w3schools.com/jsref/jsref_parse.asp)는 문자열을 매개 변수로 사용합니다. Date 매개 변수와 함께 사용하면 좋은 생각이 아닐 것입니다. – Daniel

+0

'jsonObj.getDat'를 타임 스탬프로 저장하는 것이 성공입니다. 그런 다음 날짜 생성자에서 해당 타임 스탬프를 사용합니다. – sabithpocker

+0

'JSON.stringify' 메서드는 [toJSON()] (http://www.w3schools.com/jsref/jsref_tojson.asp) 메소드가 자동으로 호출됩니다.그것은 ISO-8601 표준을 사용하기 때문에 타임 스탬프만큼이나 효과가 있습니다. – Daniel

관련 문제