Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将一个变量的日期与另一个变量的时间与MomentJS组合?_Javascript_Momentjs - Fatal编程技术网

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