moment.js-UTC가 잘못된 날짜를 제공합니다.
moment.js UTC가 항상 잘못된 날짜를 표시하는 이유는 무엇입니까? 예를 들어 크롬의 개발자 콘솔에서 :
moment(('07-18-2013')).utc().format("YYYY-MM-DD").toString()
// or
moment.utc(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
둘 다 "2013-07-17" 을 반환 합니다. 전달 된 18th 대신 17th 를 반환하는 이유입니다 .
하지만 utc없이 momentjs를 사용하면 :
moment(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
moment.js UTC를 사용할 때도 예상되는 "2013-07-18" 이 돌아옵니다 .
moment.js UTC를 사용할 때 정확한 날짜를 얻을 수 없다는 의미입니까?
기본적으로 MomentJS는 현지 시간으로 구문 분석합니다. 날짜 문자열 (시간 없음) 만 제공되는 경우 시간은 기본적으로 자정입니다.
코드에서 현지 날짜를 만든 다음 UTC 시간대로 변환합니다 (사실 순간 인스턴스가 UTC 모드 로 전환됨). 형식이 지정되면 현지 시간에 따라 앞으로 이동하거나 뒤로.
현지 시간대가 UTC + N (N은 양수)이고 날짜 전용 문자열을 구문 분석하면 이전 날짜를 가져옵니다.
다음은이를 설명하는 몇 가지 예입니다 (내 현지 시간 오프셋은 DST 동안 UTC + 3입니다).
>>> moment('07-18-2013', 'MM-DD-YYYY').utc().format("YYYY-MM-DD HH:mm")
"2013-07-17 21:00"
>>> moment('07-18-2013 12:00', 'MM-DD-YYYY HH:mm').utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 09:00"
>>> Date()
"Thu Jul 25 2013 14:28:45 GMT+0300 (Jerusalem Daylight Time)"
날짜-시간 문자열을 UTC로 해석하려면 명시해야합니다.
>>> moment(new Date('07-18-2013 UTC')).utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
매트 존슨은 그의 대답에 언급 또는, 당신은 (수 아마도한다 )를 사용하여 첫 번째 장소에서 UTC 날짜로 구문 분석 moment.utc()
과 모호성을 방지하기 위해 두 번째 인수로 형식 문자열을 포함한다.
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
다른 방법으로 UTC 날짜를 현지 날짜로 변환하려면 local()
다음과 같이 메서드를 사용할 수 있습니다 .
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').local().format("YYYY-MM-DD HH:mm")
"2013-07-18 03:00"
Date
및 둘 다 moment
기본적으로 브라우저의 현지 시간대로 입력 문자열을 구문 분석합니다. 그러나 Date
때로는 이와 관련하여 일관성이 없습니다. 문자열이 구체적 YYYY-MM-DD
으로 하이픈을 사용 하거나 하이픈을 사용하는 경우 현지 시간YYYY-MM-DD HH:mm:ss
으로 해석 됩니다 . 와 달리 Date
, moment
구문 분석 방법에 대해 항상 일관성이 있습니다.
입력 순간을 제공 한 형식의 UTC로 구문 분석하는 올바른 방법은 다음과 같습니다.
moment.utc('07-18-2013', 'MM-DD-YYYY')
이 문서를 참조하십시오 .
그런 다음 출력을 위해 다른 형식으로 지정하려면 다음을 수행하십시오.
moment.utc('07-18-2013', 'MM-DD-YYYY').format('YYYY-MM-DD')
toString
명시 적으로 호출 할 필요가 없습니다 .
입력 형식을 제공하는 것은 매우 중요합니다. 01-04-2013
그렇지 않으면 브라우저의 문화 설정에 따라 비슷한 날짜 가 1 월 4 일 또는 4 월 1 일로 처리 될 수 있습니다.
참고 URL : https://stackoverflow.com/questions/17855842/moment-js-utc-gives-wrong-date
'Development Tip' 카테고리의 다른 글
Go에서 슬라이스를 반대로 반복하는 방법이 있습니까? (0) | 2020.10.18 |
---|---|
Mongoose에서 두 개의 OR 쿼리를 AND와 결합 (0) | 2020.10.18 |
Java 날짜 형식-추가 문자 포함 (0) | 2020.10.18 |
Django 관리자, 모델 숨기기 (0) | 2020.10.18 |
easy_install로 특정 버전 설치 (0) | 2020.10.18 |