내가 나에게 이런 마이크로 소프트의 형식으로 JSON 응답에 날짜를 제공 호출하고 서비스를 기반으로 포맷 된 날짜에 JSON 날짜 서식 그것을 처리하고 자바 스크립트에서 현지 날짜 시간으로 올바르게 변환하는 방법.
나는 그것이 제 1 차 문제는 날짜에, 지정된 문자열 형식을 통해 이상 변환하려고하는는 로케일
en-US locale "MM/DD/yyyy HH:mm:ss a" -> 3/24/2016 3:59:00 PM
en-GB locale "DD/MM/yyyy HH:mm:ss" -> 24/03/2016 15:59:00
의 경우 예를 들어 포맷하고 싶습니다. 나는 이것을 사용하여 해결했고 작동하는 것처럼 보이지만 그것을하는 가장 좋은 방법인지 확신 할 수 없다.
var jsDate = new Date(parseInt(jsonDate.substr(6)));
국제화 API를 사용하여 서식을 수행하는 데 사용할 수있는 날짜 개체를 출력합니다. 나는 다음 날짜 생산하기 위해 때때로 (나중에) 올바른 로케일을 사용할 수 있습니다 형식은하지만, 출력에 있지만 여분의 쉼표로 거의가
var jsDate = new Date(parseInt(jsonDate.substr(6)));
var locale = window.navigator.userLanguage || window.navigator.language;
jsDate.toLocaleString(locale); //3/24/2016 3:59:00 PM or 24/03/2016, 15:59:00
을 I는 쉼표를 제거하는 경우 현지화를 기반으로 작동하지 않는 형식을 수행하거나 수행하는 데 다소 호사 스럽습니다.
두 번째 문제는 로케일을 구할 수있는 확실한 방법이 있습니까? userLanguage 또는 언어로 검색하려고했지만 IE에서 사용되는 browserLanguage도 있다는 것을 깨달았습니다. 위의
var locale = window.navigator.userLanguage || window.navigator.language;
는 여러 언어 언어 및 입력 설정에서 설정 한 경우 목록의 마지막 하나를 끌어 때문에 크롬, 예를 들어 보인다 일치하지 완전한 증거 때의 첫 번째에 크롬 기본값 목록과 다른 브라우저가 어떻게 그것을 처리할지 모르겠다.
나는 moment.min.js 및 moment-with-locales.min.js를 포함하여 시도한 momentjs를 사용하기 위해 다른 곳을 읽었습니다. 그러나 그것도 작동하지 않았다 :
var jsDate = new Date(parseInt(jsonDate.substr(6)));
var locale = window.navigator.userLanguage || window.navigator.language;
moment.locale(locale);
var newDate = moment(jsDate).format("L LTS") //03/24/2016 3:59:00 PM but does not change base on locale so it remains MM/DD/YYYY ... even though I changed locale
나는 이것에 관해 momentjs에 게시 된 이슈를 보았지만 더 오래되었다. https://github.com/moment/moment/issues/1044
어리석은 뭔가가 누락되었거나 더 좋은 방법이 있는지 확실하지 않습니다. 감사합니다
나는 거의 위의 동일한 코드 구현하지만 일부 내가 흐린 약이 제공하는 로케일을 감지하는 방법이었다 생각이 설정하는 순간까지? 그것은 내 두 번째 문제입니다. – Lumpy
@Lumpy는 한 번에 여러 개의 다른 질문을하지 않도록 노력합니다. 브라우저 로케일을 얻는 방법을 알고 싶다면 이미 비슷한 질문이 많이 있습니다 (예 : [here] (http://stackoverflow.com/q/1043339/4131048).) 코드 샘플에 다음과 같이 명시했습니다. MM/DD/YYYY_를 유지하기 위해 로케일에서베이스를 변경하십시오. 그래서 나는 momentjs를 사용하여 작업 샘플로이 응답을 보냈습니다. – VincenzoC