如何在momentjs中设置日期时间

Mo.*_*Mo. 24 javascript time datetime date momentjs

momentjs是否提供了在特定时间设置时间的任何选项?

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

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

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

在此输入图像描述

Ben*_*enM 54

Moment.js没有提供通过字符串设置现有时刻的方法.为什么不将两者连接起来:

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

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

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

或者,您可以使用两个Moment对象并使用getter和setter.虽然是一个更冗长的选项,但如果你不能使用连接,它可能会有用:

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);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • 如果使用不同的时区,串联不是一个可行的选择。 (3认同)

LoK*_*Kat 50

由于这会在 google 结果中弹出,因此 moment 现在有一个set(unit, value)功能,您可以通过以下方式实现:

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

或作为组合功能

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

注意:set函数要求值为Integer类型


She*_*ira 11

对于今天不同时间的日期:

moment(12, "HH")
Run Code Online (Sandbox Code Playgroud)


Ben*_*ing 6

以防万一有人想知道如何在Date Object上设置时间,我是这样做的:

const dateObj = new Date();

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

const timeAndDate = moment(dateStr + ' ' + timeStr).toDate();
Run Code Online (Sandbox Code Playgroud)


dmn*_*_89 5

var timeAndDate = moment(date).add(moment.duration(time))
Run Code Online (Sandbox Code Playgroud)

当您分隔日期和时间的字符串时,您可以首先解析为日期,第二个解析为持续时间,然后将它们相加。moment这应该以正确的日期和时间创建