Moment.js로 날짜에서 시간을 어떻게 제거합니까?


268
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LLL');
};

"28 februari 2013 09:24"가 표시됩니다.

그러나 나는 마지막에 시간을 제거하고 싶습니다. 어떻게해야합니까?

Moment.js 사용 하고 있습니다.


스플릿 방법을 사용하여 문자열 분리
AmGates

답변:


605

너무 늦게 들어가서 죄송하지만 형식을 지정 하지 않고 시간 부분 을 제거 하려면 코드는 다음과 같습니다.moment()

.startOf('day')

참조 : http://momentjs.com/docs/#/manipulating/start-of/


90
시간대 사이에 있거나 시간대에주의를 기울이지 않는 경우이 점에주의하십시오. 나는 나의 UTC 날짜가 현지 시간으로 변환하기 한 문제가 있었다 다음 적용 startOf('day')다음의 시작이었다 이전의 일을. moment(moment.utc('2013-10-29T00:00:00+00:00').startOf('day').format('LL')).startOf('day').toDate()
colllin 님

26
또한이 함수는 실제로 원래의 객체를 변경하도록주의하십시오
Dirk Boer

6
.startOf('day')시간 부분 자체를 제거하지 않고 시간을 00:00:00으로 설정합니다. 예, 'collin'에서 언급했듯이 날짜를 저장할 때주의해야합니다. format('LL')이 스레드에서 답변 된 것처럼 더 나은 대안이을 사용 하는 것입니다.
Sudarshan_SMD

4
원본 객체를 변경하지 않으려면 someMoment.clone().startOf('day')또는을 사용하십시오 moment(someMoment).startOf('day').
Pang

startOf ( 'day')는 시간을 00:00:00으로 설정하지 않고 모든 것을 재설정합니다. moment().utc().add(1,'d').startOf('day')개체를 오늘로 재설정합니다.
Tristan

50

사용하다 format('LL')

당신이 그것을하려고하는 것에 따라 format('LL'), 트릭을 할 수 있습니다. 다음과 같이 생성됩니다.

Moment().format('LL'); // => April 29, 2016

26

올바른 방법은 요구 사항에 따라 입력을 지정하여 더 많은 유연성을 제공하는 것입니다.

본 정의는 다음을 포함한다

LTS : 'h:mm:ss A', LT : 'h:mm A', L : 'MM/DD/YYYY', LL : 'MMMM D, YYYY', LLL : 'MMMM D, YYYY h:mm A', LLLL : 'dddd, MMMM D, YYYY h:mm A'

이 중 하나를 사용하거나 moment (). format ()에 전달 된 입력을 변경할 수 있습니다. 예를 들어, 귀하의 경우에는을 전달할 수 있습니다 moment.utc(dateTime).format('MMMM D, YYYY').


9
formatCalendarDate = function (dateTime) {
    return moment.utc(dateTime).format('LL')
}


6

최신 버전의 moment.js를 사용하면 다음을 수행 할 수도 있습니다.

var dateTime = moment();

var dateValue = moment({
    year: dateTime.year(),
    month: dateTime.month(),
    day: dateTime.date()
});

http://momentjs.com/docs/#/parsing/object/를 참조 하십시오 .


date: dateTime.date()대신에 그렇지 day: dateTime.date()않습니까?
philfreo

1
'날짜와 날짜 키는 모두 달을 의미합니다.' 문서에서. day2.8.4 이전 버전에서 작동합니다.
oldwizard


4

moment.js라이브러리를 사용할 때마다 다음과 같이 원하는 형식을 지정합니다.

moment(<your Date goes here>).format("DD-MMM-YYYY")

또는

moment(<your Date goes here>).format("DD/MMM/YYYY")

... 등 아이디어를 얻길 바랍니다.

포맷 기능 안에 원하는 포맷을 넣습니다. 위의 예는 분과 초와 같은 날짜에서 원하지 않는 모든 요소를 ​​제거합니다.


콘텐츠를 다른 로케일로 표시하려는 경우에는 좋지 않습니다. 당신이 사용자의 로케일에 대한 올바른 형식으로 표시 날짜에 원하는 경우 미리 설정된 날짜 형식 중 하나 (사용해야 L, LL등)
AJ 리처드슨

MMM을 세 번 설정 한 이유
Menai Ala Eddine-알라딘

MMM은이 달의 첫 3 글자를 제공합니다. '4 월'MMMM은 당신에게 완전한 달 이름을 줄 것입니다
Adrian Grzywaczewski

4

나 같은 사람들이 날짜 형식 (원하는 들어 LLLL)하지만 일의 시간없이, 즉위한 GitHub의 문제있다 : https://github.com/moment/moment/issues/2505 . 지금은 해결 방법이 있습니다.

var localeData = moment.localeData( moment.locale() ),
    llll = localeData.longDateFormat( 'llll' ),
    lll = localeData.longDateFormat( 'lll' ),
    ll = localeData.longDateFormat( 'll' ),
    longDateFormat = llll.replace( lll.replace( ll, '' ), '' );
var formattedDate = myMoment.format(longDateFormat);

1
마지막으로 합리적인 대답입니다. 나의 투표를 가져 가라! 이 문제는 아직 해결되지 않은 것 같습니다.
oyalhi

3

이 생성자를 사용할 수 있습니다

moment({h:0, m:0, s:0, ms:0})

http://momentjs.com/docs/#/parsing/object/

console.log( moment().format('YYYY-MM-DD HH:mm:ss') )

console.log( moment({h:0, m:0, s:0, ms:0}).format('YYYY-MM-DD HH:mm:ss') )
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


여기에 몇 가지 광석 설명 추가
매튜스 써니

이건 재미 있네! 순간을 만들고 시간, 분 및 초를 재정의하지만 여전히 기초 날짜를 유지합니다. 내가 moment({h:0, m:0, s:0, ms:0})오늘이 아니라 1970 년 1 월 1 일 을 줄 것이라고 추측했을 것이기 때문에 흥미 롭습니다 .
Simon_Weaver

또한 같은 것 같습니다 moment({ h: 0 }).
Simon_Weaver

1
문서에 따르면Omitted units default to 0 or the current date, month, and year.
Simon_Weaver

2

이 시도:

moment.format().split("T")[0]

이 방법으로 조심하십시오. 1993-06-07T22:00:00.000Z결과 1993-06-07는 오늘의 시작입니다.1993-06-08
Tom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.