Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.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日期?_Javascript - Fatal编程技术网

如何在给定单位(小时、天、月、年)和数量的情况下增加JavaScript日期?

如何在给定单位(小时、天、月、年)和数量的情况下增加JavaScript日期?,javascript,Javascript,给定一个日期、一个单位(天、月、年甚至秒)和一个数量,以最干净/最简单的方式增加JavaScript日期的最佳方式是什么?(最好不用图书馆) 此函数将日期单位设置为自身+增量 函数iD(日期、增量、单位){ 变量单位={ s:[date.getSeconds(),“setSeconds”], m:[date.getMinutes(),“setMinutes”], h:[date.getHours(),“setHours”], d:[date.getDate(),“setDate”], M:[d

给定一个日期、一个单位(天、月、年甚至秒)和一个数量,以最干净/最简单的方式增加JavaScript日期的最佳方式是什么?(最好不用图书馆)


此函数将日期单位设置为自身+增量

函数iD(日期、增量、单位){
变量单位={
s:[date.getSeconds(),“setSeconds”],
m:[date.getMinutes(),“setMinutes”],
h:[date.getHours(),“setHours”],
d:[date.getDate(),“setDate”],
M:[date.getMonth(),“setMonth”],
y:[date.getFullYear(),“setFullYear”]
}
日期[单位[单位][1]](单位[单位][0]+增量);
返回日期;
}
log(iD(newdate(),2,“M”)+“”);
log(iD(newdate(),3,“y”)+“”);

log(iD(new Date(),30,“m”)+“”)
此函数将日期单位设置为自身+增量

函数iD(日期、增量、单位){
变量单位={
s:[date.getSeconds(),“setSeconds”],
m:[date.getMinutes(),“setMinutes”],
h:[date.getHours(),“setHours”],
d:[date.getDate(),“setDate”],
M:[date.getMonth(),“setMonth”],
y:[date.getFullYear(),“setFullYear”]
}
日期[单位[单位][1]](单位[单位][0]+增量);
返回日期;
}
log(iD(newdate(),2,“M”)+“”);
log(iD(newdate(),3,“y”)+“”);

console.log(iD(new Date(),30,“m”)+“”)
您可以使用此函数:

函数addToDate(dt,unit,num){
常数p={
s:dt.getSeconds(),
m:dt.getMinutes(),
h:dt.getHours(),
d:dt.getDate(),
M:dt.getMonth(),
y:dt.getFullYear()
};
p[单位]+=num;
dt=新日期(p.y、p.M、p.d、p.h、p.M、p.s);
//超出月末?返回当月最后一天
如果(“My.”包括(单位)和&dt.getMonth()!==p.M%12)dt.setDate(0);
返回dt;
}
//示例调用:将1个月添加到今天

log(addToDate(new Date(),“M”,1.toString())您可以使用此功能:

函数addToDate(dt,unit,num){
常数p={
s:dt.getSeconds(),
m:dt.getMinutes(),
h:dt.getHours(),
d:dt.getDate(),
M:dt.getMonth(),
y:dt.getFullYear()
};
p[单位]+=num;
dt=新日期(p.y、p.M、p.d、p.h、p.M、p.s);
//超出月末?返回当月最后一天
如果(“My.”包括(单位)和&dt.getMonth()!==p.M%12)dt.setDate(0);
返回dt;
}
//示例调用:将1个月添加到今天

log(addToDate(new Date(),“M”,1.toString())
您是否使用getUnit和setUnit@trincot如果可能的话,我希望避免使用一个库,而不使用全部if/else语句。@SebastianSpeitel问题更新!您是否看过使用getUnit和setUnit@trincot如果可能的话,我希望避免使用一个库,而不使用全部if/else语句。@SebastianSpeitel问题更新!不确定发生了什么,但我在记录日期时得到了“无效日期”。您向函数传递了哪三个参数以获得该错误?您确定提供了有效的日期和一个可接受的单位(y、M、d、h、M、s)并且第三个参数是数字吗?我只能在第一个参数不是有效日期或第三个参数不是整数的情况下重现此错误…你是对的。我通过的日期无效。这是一个firestore时间戳对象(可以通过
toDate()
轻松地转换为JS对象)。不确定发生了什么,但我在记录日期时得到了“无效日期”。您向函数传递了哪三个参数以获得该错误?您确定提供了有效日期和可接受的单位之一(y、M、d、h、M、s)第三个参数是数字?我只能在第一个参数不是有效日期或第三个参数不是整数时重现此错误…你说得对。我传递的日期无效。它是firestore时间戳对象(可以通过
toDate()
轻松转换为JS对象)。
var dateIncrementUnit = "d";
var dateIncrementAmount = 1;
var myDate = new Date();

var newDate = ? // myDate + 1d