이 형식은 T00 : 00 : 00.000Z를 의미합니까?


답변:


84

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());

2
닫기 - 당신은 사용해야합니다 getUTCHours, getUTCMinutes하고 getUTCSeconds. 그렇지 않으면 DST로 인해 어떤 시간대와 선택한 날짜에 따라 다른 결과를 산출하는 현지 시간대의 동작을 전달합니다.
Matt Johnson-Pint

12

나는 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/


2
적절한 형식 문자열을 사용하여 생성자에서이를 직접 구문 분석 할 수 있어야합니다. (순간이 값의 일부가 아닌 경우 현재 날짜를 가정합니다.) 또한 moment.utc(...)결과 값이 원래 값과 동일한 UTC 영역에 있도록 고려할 수 있습니다 .
Matt Johnson-Pint

3

한 사람이 이미 제안했듯이

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`

위의 코드를 설명하면서 moment.js 자바 스크립트 라이브러리 의 사용을 명확하게 링크하고 권장하는 것도 좋을 것 입니다.
VKen 2019

이것은 질문에 대한 답을 제공하지 않습니다. 평판 이 충분 하면 모든 게시물댓글 수 있습니다 . 대신 질문자의 설명이 필요하지 않은 답변을 제공하세요 . - 리뷰에서
Phil Tune

@PhilTune 당신이 맞아요, 제 두뇌가 너무 빨리 움직여서 기술적으로 질문이 아닌 댓글에 답장을했다고 생각합니다
that_developer 19

1

또는 패턴 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에서 파싱 할 수 없습니다.


문자열 유형에서 OffsetDateTime으로 시간 변환에 대한 내 문제가 해결되었습니다
RSH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.