2016-09-30 3 views
1
여기

내가해야 할 일이다 : 나는 ISO 8601 형식의 날짜 열이옵션)

을 내가 구문 분석하고 읽을 수있는 날짜 "September 30, 2016"

를 생성 할 필요가 dateString = "2016-09-30T04:00:00.000+0000" 여기 내 포맷터 sap.ui.core.format.DateFormat이 나를 위해이 작업을 수행합니다.

return dateFormatter.format(new Date(dateString)); 

문제는

완전히 구현에 의존했다 문자열의 구문 분석, ES5까지로 다음 Date.parse를 사용하지 않는 것이 좋습니다, MDN에 따르면입니다. 서로 다른 호스트가 날짜 문자열을 구문 분석하는 방법에 여전히 많은 차이가 있으므로 문자열을 수동으로 구문 분석해야합니다 ( 다른 형식을 수용해야하는 경우 라이브러리가 도움이 될 수 있음).

  • 직접 전화 : Date.parse(dateString)
  • 암시 전화 : new Date(dateString)

그래서 Date.parse() 나의 포맷으로 어쨌든이라고합니다.

MDN에서 권장 한 수동 구문 분석을 더 잘 수행 할 수 있습니까? 이 작업을 수행하는 SAPUI5 방법이 있습니까?

+1

ES5, 나는 ES3에 거의 사람이 없다고 생각할 것입니다. ES3이 있다면 SAPUI5가 작동 할 것 같지 않습니다 :) 그래서 구문 분석을 사용하는 것이 좋습니다. 그렇지 않다면 순간도 있습니다. 당신이 사용할 수 있습니다. – Keith

+1

'Date.parse'는 ES5에서 * 지원 *되었지만 엔진에서 구현되는 방식이 여전히 일관성이 없으므로 날짜 분석을해야하는 이유는 무엇입니까? – adeneo

+0

@adeneo, 날짜가 완벽하게 형성된 ISO 날짜처럼 보입니다. 디코딩 할 수없는 브라우저를 알고 있으면 관심을 가질 것입니다. – Keith

답변

0

구문 분석 ISO는 대부분의 엔진에서 일치해야 날짜,하지만 보장, 항상 당신이 원하는대로

new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]); 

다음 만보고로 정수 인수를 전달하는 것입니다 Date 객체를 정의 할 수있는 적절한 방법이 없습니다 문자열이 포함 개월 등의 다시, 그리고 객체, 단순히 날짜를 직접 구문 분석하는 것이 작업을 수행 할 수있는 가장 일관된 방법

var dateString = "2016-09-30T04:00:00.000+0000"; 
 

 
var months = [ 
 
    '', 'January', 'February', 'March', 'April', 
 
    'May', 'June', 'July', 'August', 'September', 
 
    'October', 'November', 'December' 
 
]; 
 

 
var parts = dateString.split(/[-T:.]/); 
 
var parsed = months[+parts[1]] + ' ' + parts[2] + ', ' + parts[0]; 
 

 
document.body.innerHTML = parsed; // September 30, 2016

+0

많은 논의와 시행 착오 끝에 SAPUI5가이를 해결하는 방법은 [sap.ui.model.type.DateTime] (https://openui5.hana.ondemand.com/docs/api/symbols/sap)을 사용하는 것입니다. .ui.model.type.DateTime.html) 또는 [sap.ui.model.type.Date] (https://openui5.hana.ondemand.com/docs/api/symbols/sap.ui.model.type. Date.html) 날짜를 표시하는 데 너무 많은 사용자 정의가없는 경우. 그러나 이것을 사용하면 로케일 정보 또는 로컬 시스템의 날짜 시간에 따라 날짜의 스타일을 결정할 수 있습니다. – daredadevil