我们说我有一个现有的时刻对象:
var m = moment(); // this will default to now
并希望使用新的Date对象更新它,但不要替换整个对象。例如。这对我来说不是一个可接受的解决方案:
m = moment(new Date());
我可以在docs中找到的唯一解决方案是使用set方法:
m.set({'year': 2013, 'month': 3});
但是通过这种方式,我们需要将现有的Date对象拆分为这样的和平:
var myDate = new Date();
var newDate = moment(myDate);
var splittedDate = {
year: newDate.get('year'),
month: newDate.get('month'),
date: newDate.get('date'),
hour: newDate.get('hour'),
minute: newDate.get('minute'),
second: newDate.get('second'),
millisecond: newDate.get('millisecond')
};
m.set(splittedDate);
但这看起来很难看。也许有人可以建议更好的解决方案?
答案 0 :(得分:19)
可能有点晚了,但您可以将新日期转换为对象(newDate.toObject()
)并将其传递给前一时刻对象的set
方法:
var m = moment(); // Initial moment object
// Create the new date
var myDate = new Date();
var newDate = moment(myDate);
// Inject it into the initial moment object
m.set(newDate.toObject());
答案 1 :(得分:1)
只需使用Date
对象作为参数:
var d = new Date();
var m = moment(d);
和 voila ,您的时刻对象设置为与Date对象相同的时间。
答案 2 :(得分:0)
moment("01/01/2000", "DD/MM/YYYY")
moment("01 Jan 2000")
对于OP,给定以特定方式格式化的字符串,您只需将字符串及其格式传递给矩,例如:
moment("01-01-2000 23:45", "DD-MM-YYYY HH:MM")
遮罩有很多选项,所有这些都在momentjs文档中列出。您甚至可以传递可能的掩码数组,片刻之后将尝试全部尝试,看看是否可以理解您的原始字符串。
答案 3 :(得分:0)
这非常简单,因为javascript的内置Date类返回的date对象与您可以使用的那一刻返回的对象相比是不同的
const oldDate = new Date();
const newDate = moment(date);
这将从当前使用现有的javascript的date对象作为参数返回date对象。