MomentJSで日付と時刻を設定する方法

2017-03-01 javascript date datetime time momentjs

momentjsには、特定の時刻で時刻を設定するオプションがありますか?

var date = "2017-03-13";
var time = "18:00";

var timeAndDate = moment(date).startOf(time);

console.log(timeAndDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

ここに画像の説明を入力してください

Answers

Moment.jsは、文字列を通じて既存の瞬間の時間を設定する方法を提供しません。なぜ2つを連結しないのですか?

var date = "2017-03-13";
var time = "18:00";

var timeAndDate = moment(date + ' ' + time);

console.log(timeAndDate);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

または、2つのMomentオブジェクトを使用し、ゲッターとセッターを使用することもできます。はるかに詳細なオプションですが、連結を使用できない場合に役立ちます。

let dateStr = '2017-03-13',
    timeStr = '18:00',
    date    = moment(dateStr),
    time    = moment(timeStr, 'HH:mm');

date.set({
    hour:   time.get('hour'),
    minute: time.get('minute'),
    second: time.get('second')
});

console.log(date);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

誰かが日付オブジェクトの時間を設定する方法を疑問に思っている場合に備えて、ここに私がそれをした方法があります:

const dateObj = new Date();

const dateStr = dateObj.toISOString().split('T').shift();
const timeStr = '03:45';

const timeAndDate = moment(dateStr + ' ' + timeStr).toDate();
var timeAndDate = moment(date).add(moment.duration(time))

日付と時刻の文字列を区切ったら、最初は日付として、2番目は期間として解析し、それらを追加するだけです。これにより、適切な日付と時刻のmomentが作成されます

これはグーグルの結果でポップアップするので、momentにはset(unit, value)関数があり、次のようにしてこれを達成できます。

const hours = 15;
const minutes = 32;
var date = moment("1946-05-21").set("hour", hours).set("minute", minutes);

または複合機能として

var date = moment("1946-05-21").set({"hour": 15, "minute": 32});

注: set関数では、値が整数型である必要があります

今日の日付が別の時間の場合:

moment(12, "HH")

Related