Moment.jsで日付から時間を削除するにはどうすればよいですか?


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

「2013年2月28日09:24」と表示されます。

でも最後に時間を削除したいと思います。どうやってやるの?

私はMoment.jsを使用しています


文字列を分割するには、Splitメソッドを使用します
AmGates 2013

回答:


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 2016

4
元のオブジェクトの変更を回避するには、someMoment.clone().startOf('day')またはを使用しますmoment(someMoment).startOf('day')
2017年

注意してください。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
「日と日付キーはどちらも日を意味します。」ドキュメントから。dayバージョン2.8.4より前のバージョンで動作します。
oldwizard

6

さて、私はパーティーに遅れるのを知っています。6年後のように、これは私が理解し、YYYY-MM-DDでフォーマットするために必要なものでした。

moment().format(moment.HTML5_FMT.DATE); // 2019-11-08

のようなパラメータを渡すこともできます2019-11-08T17:44:56.144

moment("2019-11-08T17:44:56.144").format(moment.HTML5_FMT.DATE); // 2019-11-08

https://momentjs.com/docs/#/parsing/special-formats/


4

moment.jsライブラリを使用するときはいつでも、この方法で目的のフォーマットを指定します。

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

または

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

... etcアイデアが出ればいいのに

format関数内で、目的のフォーマットを入力します。上記の例では、分や秒などの日付から不要な要素をすべて削除します


コンテンツを異なるロケールで表示したい場合、これは良い考えではありません。あなたは、ユーザーのロケールのための正しい形式で日付を表示したい場合は、プリセットの日付のいずれかの形式(使用する必要があるLLLなど)
AJリチャードソン

MMMを3回設定する理由。
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>


ここに鉱石の説明を追加します
Mathews Sunny

これは面白い!それは瞬間を作り出し、時間、分、秒を上書きしますが、まだ基礎となる日付を維持しています。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-071993-06-08
トム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.