programing

Moment.js를 최신 개체로 변환

newsource 2022. 9. 27. 23:55

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