GMT로 된 문자열 "2017-01-17 00:00:00.000"
이 있고 시간과 날짜를 다르게 얻고 싶습니다 (문자열이 해당 형식 일 필요는 없음). 나는 시도했다 :
var datetime = new Date(calEvent.start);
var date = datetime.toLocaleDateString(); //output: 1/16/2017
var time = datetime.toLocaleTimeString(); //output: 4:00:00 PM
그러나 내가 원하는 날짜와 시간의 출력은 GMT 시간대 여야합니다. 누구든지 문자열에 부분 문자열을 사용하지 않고 그렇게하는 방법을 알고 있습니까? 감사
문자열 "2017-01-17 00 : 00 : 00.000"은 ECMA-262에 지정된 ISO 8601의 하위 집합과 일치하지 않으며 일부 브라우저에서 올바르게 구문 분석되지 않습니다. 그대로 파싱되면 로컬로 처리됩니다.
날짜와 시간 사이에 "T"를 추가하고 UTC에 대해 후행 "Z"를 추가하여 문자열을 수정할 수 있습니다. 그런 다음 날짜 생성자가이를 구문 분석하도록합니다.
var s = '2017-01-17 00:00:00.000';
var d = new Date(s.replace(' ', 'T') + 'Z');
console.log(d);
대부분의 최신 브라우저에서 작동하지만 IE와 같은 이전 브라우저에서는 실패합니다. strting을 UTC로 구문 분석하는 작은 함수를 작성할 수도 있습니다.
function parseAsUTC(s) {
var b = s.split(/\D/);
return new Date(Date.UTC(b[0], b[1] - 1, b[2], b[3], b[4], b[5], b[6]));
}
console.log(parseAsUTC('2017-01-17 00:00:00.000'));
사용 가능한 다양한 라이브러리 중 하나를 사용할 수도 있지만 하나의 특정 형식을 구문 분석하는 데 필요한 모든 경우에는 필요하지 않습니다.
일반적으로 Date 생성자 (또는 Date.parse)로 문자열을 구문 분석하는 것은 대체로 구현에 의존하기 때문에 권장되지 않지만 ISO 8601 확장 형식은 이제 상당히 잘 지원되며 ECMA-262에 지정되어 있습니다.
시간대는 대문자 "Z"로 지정해야합니다. Firefox (적어도)는 "z"를 사용하면 잘못된 날짜를 생성합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다