Javascript 如何将一个变量的日期与另一个变量的时间与MomentJS组合?
我有三个变量:Javascript 如何将一个变量的日期与另一个变量的时间与MomentJS组合?,javascript,momentjs,Javascript,Momentjs,我有三个变量: date=2016年8月2日星期二20:00:00 GMT-0400(美国东部时间) startTime=1970年1月1日星期四09:00:00 GMT-0500(美国东部时间) endTime=1970年1月1日星期四10:00:00 GMT-0500(美国东部时间) 我想修改startTime和endTime以保留它们的时间,但使用date中的日期部分。我如何使用momentjs实现这一点?您可以使用momentjs的方法实现这一点: var date = moment(n
date=2016年8月2日星期二20:00:00 GMT-0400(美国东部时间)代码>
startTime=1970年1月1日星期四09:00:00 GMT-0500(美国东部时间)
endTime=1970年1月1日星期四10:00:00 GMT-0500(美国东部时间)
我想修改startTime
和endTime
以保留它们的时间,但使用date
中的日期部分。我如何使用momentjs实现这一点?您可以使用momentjs的方法实现这一点:
var date = moment(new Date('Tue Aug 02 2016 20:00:00 GMT-0400 (EDT)'));
var startTime = moment(new Date('Thu Jan 01 1970 09:00:00 GMT-0500 (EST)'));
var endTime = moment(new Date('Thu Jan 01 1970 10:00:00 GMT-0500 (EST)'));
var year = date.get('year');
var month = date.get('month');
var day = date.get('day');
startTime.set({ year: year, month: month, day: day });
endTime.set({ year: year, month: month, day: day });
console.log(date.format(), startTime.format(), endTime.format());
输出(CST时区):
正如我在评论中所说,您可以为和使用时刻设置器和getter,或者使用原生js(getFullYear
,getMonth
,getDate
)
下面是一个工作示例,显示了两种解决方案:
//模拟日期对象输入
var日期=时刻('2016-08-02T20:00:00')。toDate();
var startTime=力矩('1970-01-01T09:00:00')。toDate();
var endTime=力矩('1970-01-01T10:00:00')。toDate();
//使用momentjs
var mDate=时刻(日期);
var mStartTime=力矩(开始时间);
mStartTime.year(mDate.year()).month(mDate.month()).day(mDate.day());
log(mStartTime.format());
//纯JavaScript
endTime.setFullYear(date.getFullYear());
endTime.setMonth(date.getMonth());
setDate(date.getDate());
log(endTime.toISOString())代码>
即使强尼的答案是正确的。。。由于您特别询问了如何使用moment.js执行此操作:
var日期=时刻(新日期('2016年8月15日星期二20:00:00 GMT-0400(EDT));
var startTime=时刻(新日期('1970年1月1日星期四09:00:00 GMT-0500(美国东部时间));
var endTime=时刻(新日期('1970年1月1日星期四10:00:00 GMT-0500(美国东部时间));
log(“日期:+date.format());
log(“startTime old:+startTime.format());
log(“endTime old:+endTime.format());
起始时间年(日期年());
startTime.dayOfYear(date.dayOfYear());
endTime.year(date.year());
endTime.dayOfYear(date.dayOfYear());
log(“startTime new:+startTime.format());
log(“endTime new:+endTime.format())代码>
也许您可以使用时刻设置器和getter,或者使用原生js(getFullYear
,getMonth
,getDate
)
2016-08-02T19:00:00-05:00 2016-08-02T08:00:00-05:00 2016-08-02T09:00:00-05:00