Moment.js를 최신 개체로 변환
Moment.js를 사용하여 올바른 모멘트 객체를 시간대가 있는 날짜 객체로 변환할 수 없습니다.정확한 날짜를 알 수 없어요.
예:
var oldDate = new Date(),
momentObj = moment(oldDate).tz("MST7MDT"),
newDate = momentObj.toDate();
console.log("start date " + oldDate)
console.log("Format from moment with offset " + momentObj.format())
console.log("Format from moment without offset " + momentObj.utc().format())
console.log("(Date object) Time with offset " + newDate)
console.log("(Date object) Time without offset "+ moment.utc(newDate).toDate())
이를 통해 모멘트 객체를 날짜 객체로 변환합니다.
http://momentjs.com/docs/#/표시중/as-cript-date/
moment().toDate();
수율:
Tue Nov 04 2014 14:04:01 GMT-0600 (CST)
원하는 구역의 데이터로 모멘트 타임존을 초기화하면 코드는 예상대로 작동합니다.
모멘트를 타임존으로 올바르게 변환하고 있습니다.타임존은 다음 출력의 두 번째 줄에 반영됩니다.momentObj.format()
.
UTC로 전환하면 오프셋이 떨어질 뿐만 아니라 UTC 시간대로 다시 변경됩니다.그럴 거면 원본은 필요 없어.tz()
아예 전화하지 마.그냥 하면 돼moment.utc()
.
출력 형식 문자열을 변경하려는 것일 수도 있습니다.이 경우 필요한 파라미터를 지정하기만 하면 됩니다.format
방법:
momentObj.format("YYYY-MM-DD HH:mm:ss")
코드의 마지막 행에 대해서 - 로 돌아가면Date
오브젝트 사용toDate()
moment.js의 동작을 포기하고 JavaScript의 동작으로 돌아갑니다.자바스크립트Date
오브젝트는 항상 실행 중인 컴퓨터의 로컬 시간대로 인쇄됩니다.JS가 할 수 있는 건 아무것도 없어
다른 몇 가지 사소한 것들이 있습니다.
모멘트 컨스트럭터에서는,
Date
, 보통 사용하지 않는 것이 가장 좋습니다."지금"에는 사용하지 마십시오.moment(new Date())
대신, 그냥 사용하세요.moment()
둘 다 작동하지만 불필요하게 중복됩니다.문자열에서 해석하는 경우 해당 문자열을 모멘트로 직접 전달합니다.해석하려고 하지 마세요.Date
먼저, 순간의 파서가 훨씬 더 믿을 만하다는 것을 알게 될 것이다.타임존과 같은
MST7MDT
이전 버전과의 호환성을 위해 존재합니다.이러한 타임존은 POSIX 스타일의 타임존에서 생성되며, 그 중 일부만이 TZDB 데이터에 포함되어 있습니다.꼭 필요한 경우를 제외하고 다음과 같은 키를 사용해야 합니다.America/Denver
.
.toDate
별로 효과가 없었습니다.그래서 제가 한 일은 다음과 같습니다.
futureStartAtDate = new Date(moment().locale("en").add(1, 'd').format("MMM DD, YYYY HH:MM"))
이것이 도움이 되기를 바란다
mementjs는 javascript date 오브젝트를 제어할 수 없기 때문에 이에 대한 작업을 찾았습니다.
const currentTime = new Date();
const convertTime = moment(currentTime).tz(timezone).format("YYYY-MM-DD HH:mm:ss");
const convertTimeObject = new Date(convertTime);
이렇게 하면 변환된 시간과 함께 javascript 날짜 개체가 제공됩니다.
그 질문은 좀 애매하다.저는 이것을 설명하는데 최선을 다하겠습니다.먼저 모멘트 타임존을 사용하는 방법을 이해해야 합니다.이 답변에 따르면 TypeError: moment().tz는 함수가 아닙니다.기본 모멘트가 아닌 모멘트 타임존에서 모멘트를 Import해야 합니다(물론 npm install moment-timezone!).확실히 하기 위해
const moment=require('moment-timezone')//import from moment-timezone
타임존 기능을 사용하려면 , moment.tz 를 사용합니다(자세한 것에 대하여는, https://momentjs.com/timezone/ 를 참조해 주세요).이 함수는 특정 시간대와 함께 모멘트 개체를 반환합니다.확실히 하기 위해
var newYork= moment.tz("2014-06-01 12:00", "America/New_York");/*this code will consider NewYork as the timezone.*/
여기서 newYork(모멘트 객체)를 모멘트의 toDate()(ISO 8601 포맷 변환)로 변환하려고 하면 그리니치의 시간이 표시됩니다.영국. 자세한 내용은 이 기사 https://www.nhc.noaa.gov/aboututc.shtml,에서 UTC에 대해 알아보십시오.단, 현지시간만 이 형식(이 예에 따라 뉴욕시간)으로 할 경우에는 method .utc(true)를 arg true와 함께 모멘트오브젝트에 추가합니다.확실히 하기 위해
newYork.toDate()//will give you the Greenwich ,UK, time.
newYork.utc(true).toDate()//will give you the local time. according to the moment.tz method arg we specified above, it is 12:00.you can ofcourse change this by using moment()
즉, moment.tz은 사용자가 지정한 시간대를 고려하여 현지 시간과 그리니치 시간을 비교하여 결과를 제공합니다.이게 도움이 됐으면 좋겠어요.
임의의 날짜(예: utc)를 변환하려면:
moment( moment().utc().format( "YYYY-MM-DD HH:mm:ss" )).toDate()
let dateVar = moment('any date value');
let newDateVar = dateVar.utc().format();
멋지고 깔끔해!!!!
날짜 문자열에 시간대 정보가 있어야 했어요.는 원래 ★★★★★★★★★★★★★★★★★★★★★★★★★★를 사용하고 있었습니다.moment.tz(dateStr, 'America/New_York').toString();
그런데 그 끈을 순간으로 되돌리는 것에 대한 오류가 생기기 시작했어요
는 ★★★★★★★★★★★★★★★★★★★★★를 시험해 보았다.moment.tz(dateStr, 'America/New_York').toDate();
하지만 내가 필요로 하는 시간대 정보를 잃어버렸다.
타임존을 포함한 사용 가능한 날짜 문자열을 반환한 유일한 솔루션은 다음과 같습니다.moment.tz(dateStr, 'America/New_York').format();
없음)format
의 개요)
new Date(moment())
var d = moment.tz("2019-04-15 12:00", "America/New_York");
console.log( new Date(d) );
console.log( new Date(moment()) );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.min.js"></script>
2018년 6월 6일자로 jslib가 갱신되었습니다.
var newYork = moment.tz("2014-06-01 12:00", "America/New_York");
var losAngeles = newYork.clone().tz("America/Los_Angeles");
var london = newYork.clone().tz("Europe/London");
newYork.format(); // 2014-06-01T12:00:00-04:00
losAngeles.format(); // 2014-06-01T09:00:00-07:00
london.format(); // 2014-06-01T17:00:00+01:00
Angular5+를 자유롭게 사용할 수 있는 경우에는 여기서의 시간대 기능보다 datePipe 기능을 사용하는 것이 좋습니다.내 프로젝트는 Angular2에만 한정되어 있기 때문에 나는 moment.js를 사용해야 한다.
new Date(modent()) - Excel에서 데이터 열을 내보내는 동안 오류가 발생할 수 있습니다.
사용하다
mote.toDate() - 오류를 발생시키거나 내보낸 파일을 손상시키지 않습니다.
언급URL : https://stackoverflow.com/questions/17987647/moment-js-transform-to-date-object
'programing' 카테고리의 다른 글
'for' 루프의 마지막 요소를 감지하는 피토닉 방법은 무엇입니까? (0) | 2022.09.27 |
---|---|
MariaDB 아카이브 엔진 설치 (0) | 2022.09.27 |
mysql 워크벤치를 통해 mysql 데이터베이스로 데이터를 Import하려면 어떻게 해야 합니까? (0) | 2022.09.27 |
Ajax 성공 이벤트가 작동하지 않음 (0) | 2022.09.26 |
페이지가 완전히 로드되었을 때 기능을 실행하는 방법은 무엇입니까? (0) | 2022.09.26 |