누군가가 자바 스크립트로 이러한 유형의 형식을 설명해 주시겠습니까?
T00:00:00.000Z
그리고 그것을 파싱하는 방법?
답변
ISO-8601 날짜 표현 의 일부입니다 . 이 패턴의 완전한 날짜 표현에는 날짜도 포함되어야하므로 불완전합니다.
2015-03-04T00:00:00.000Z //Complete ISO-8601 date
이 날짜를있는 그대로 구문 분석하려고하면 Invalid Date
오류가 발생합니다.
new Date('T00:00:00.000Z'); // Invalid Date
따라서이 형식으로 타임 스탬프를 구문 분석하는 방법은 모든 날짜와 연결하는 것입니다.
new Date('2015-03-04T00:00:00.000Z'); // Valid Date
그런 다음 원하는 부분 만 추출 할 수 있습니다 (타임 스탬프 부분).
var d = new Date('2015-03-04T00:00:00.000Z');
console.log(d.getUTCHours()); // Hours
console.log(d.getUTCMinutes());
console.log(d.getUTCSeconds());
답변
나는 moment.js
이것을 위해 사용 하는 것이 좋습니다 . moment.js에서는 다음을 수행 할 수 있습니다.
var localTime = moment().format('YYYY-MM-DD'); // store localTime
var proposedDate = localTime + "T00:00:00.000Z";
이제 올바른 형식을 얻었으므로 유효한 경우 구문 분석하십시오.
var isValidDate = moment(proposedDate).isValid();
// returns true if valid and false if it is not.
시간 부분을 얻으려면 다음과 같이 할 수 있습니다.
var momentDate = moment(proposedDate)
var hour = momentDate.hours();
var minutes = momentDate.minutes();
var seconds = momentDate.seconds();
// or you can use `.format`:
console.log(momentDate.format("YYYY-MM-DD hh:mm:ss A Z"));
momentjs에 대한 자세한 정보 http://momentjs.com/
답변
한 사람이 이미 제안했듯이
ISO 8601 날짜 문자열을 순간에 직접 전달했습니다 .
`moment.utc('2019-11-03T05:00:00.000Z').format('MM/DD/YYYY')`
또는
`moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')`
이러한 솔루션 중 하나는 동일한 결과를 제공합니다.
`console.log(moment('2019-11-03T05:00:00.000Z').utc().format('MM/DD/YYYY')) // 11/3/2019`
답변
또는 패턴 ISO_DATE_TIME = DateTimeFormatter.ISO_DATE_TIME;
대신 DateTimeFormatter 를 사용하십시오.DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
이것은 아래 내 문제를 해결했습니다.
java.time.format.DateTimeParseException : ‘2019-12-18T19 : 00 : 00.000Z’텍스트를 인덱스 10에서 파싱 할 수 없습니다.