[javascript] 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/#/displaying/as-javascript-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의 동작으로 돌아갑니다. JavaScript Date
개체는 항상 실행중인 컴퓨터의 현지 시간대로 인쇄됩니다. 그것에 대해 moment.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"))
도움이 되었기를 바랍니다
답변
momentjs는 자바 스크립트 날짜 객체를 제어 할 수 없으므로이 문제를 해결했습니다.
const currentTime = new Date();
const convertTime = moment(currentTime).tz(timezone).format("YYYY-MM-DD HH:mm:ss");
const convertTimeObject = new Date(convertTime);
이렇게하면 변환 된 시간이있는 자바 스크립트 날짜 객체가 제공됩니다
답변
날짜 문자열에 시간대 정보가 필요했습니다. 원래 사용하고 moment.tz(dateStr, 'America/New_York').toString();
있었지만 해당 문자열을 다시 공급하는 데 오류가 발생하기 시작했습니다.
나는 노력 moment.tz(dateStr, 'America/New_York').toDate();
했지만 시간대 정보를 잃어 버렸다.
시간대 로 사용할 수있는 날짜 문자열을 반환 한 유일한 솔루션은 순간으로 피드백 될 수있었습니다.moment.tz(dateStr, 'America/New_York').format();
답변
let dateVar = moment('any date value');
let newDateVar = dateVar.utc().format();
좋고 깨끗합니다 !!!!
답변
날짜를 변환하려면 (예 : utc)
moment( moment().utc().format( "YYYY-MM-DD HH:mm:ss" )).toDate()