Javascript 如何根据给定的粒度和js中的另一个日期计算日期?

Javascript 如何根据给定的粒度和js中的另一个日期计算日期?,javascript,Javascript,我有两个日期-date\u to=new date()和date\u from应该是 date_from = date_to - 10 * granularity units 粒度可以是小时、天、周和月 到目前为止,我有这些常数 const MS_PER_DAY = 1000 * 60 * 60 * 24; const MS_PER_HOUR = 1000 * 60 * 60; const MS_PER_WEEK = 1000 * 60 * 60 * 24 * 7; 我就这样约会 const

我有两个日期-
date\u to=new date()
date\u from
应该是

date_from = date_to - 10 * granularity units
粒度可以是小时、天、周和月

到目前为止,我有这些常数

const MS_PER_DAY = 1000 * 60 * 60 * 24;
const MS_PER_HOUR = 1000 * 60 * 60;
const MS_PER_WEEK = 1000 * 60 * 60 * 24 * 7;
我就这样约会

const utc1 = Date.UTC(date_to.getFullYear(), date_to.getMonth(), date_to.getDate());
但我现在知道如何通过给定的公式获得第二次约会。
所有的帮助都将不胜感激。

您几乎拥有:

date_from = new Date(date_to.getTime() - 10 * granularity);
getTime
返回自纪元以来的毫秒数,粒度值以毫秒为单位,当您将一个数字传递到
new Date
中时,它将其用作自纪元以来的毫秒数。(从技术上讲,您不需要调用
getTime
,因为在减法表达式中使用日期将触发其
valueOf
方法,该方法对于日期与
getTime
相同。但为了清楚起见……)

例如:

const MS_/天=1000*60*60*24;
单位小时常数MS_=1000*60*60;
每周的施工成本=1000*60*60*24*7;
施工日期=新日期(2018年8月1日);//2018年9月1日
常量粒度=毫秒/天;
const date\u from=新日期(date\u to.getTime()-10*粒度);
log(“date_to:”+date_to.toISOString());
日志(“粒度:毫秒/天”);

log(“date_-from:+date_-from.toISOString())根据您想要的结果,尝试执行此操作时存在一些问题。如果您的减法导致日期超过某些夏季时间(美国:夏令时)阈值,您将以小时为单位跳转,有时会以错误的时间结束,甚至是错误的一天。例如,您可以使用
clonedDateTo.setHour(clonedDateTo.getHour()-diff)
来解决这个问题,类似地,对于天,周差就是七天差。但我不知道这是否对你有帮助。日期库可能都提供了这方面的帮助。