如何在 JavaScript 中获取两个日期之间的天数?
在给定的问题陈述中,我们将编写一个函数,借助 Javascript 功能计算给定日期之间的天数。为了解决这个问题,我们将使用一些内置的 Javascript 方法和数学运算。
理解问题陈述
在给定的问题中,我们必须创建一个函数,通过传递两个日期来调用该函数,从而计算结果中的天数。这项任务可以使用 Date 对象和基本数学来完成。例如,如果我们有两个日期,如 2023-02-15 和 2023-02-25,那么这两个日期之间有 10 天。所以我们的目的是编写一个程序来获取此输出。
上述问题的逻辑
在代码中,我们将为每个输入日期创建一个新的 Date 对象,并计算这些日期之间的绝对差值,然后将该差值除以一天中的毫秒数。然后借助 Math.round 方法将结果四舍五入为最接近的整数。
算法
步骤 1 − 创建一个名为 numberOfDays 的函数,该函数将以两个日期作为参数。
步骤 2 − 定义一个常量 oneDay,表示一天中的毫秒数。
步骤 3 − 根据输入日期借助 Date 对象创建两个新日期。
步骤 4 − 计算两个给定日期之间的差值。
步骤 5 − 完成上述所有步骤后,将差值除以一天,即可得到天数差值。
步骤 6 − 使用 Math.round 方法将结果四舍五入为最接近的整数。
算法代码
function numberOfDays(date1, date2) { // 一天中的毫秒数 const oneDay = 24 * 60 * 60 * 1000; const firstDate = new Date(date1); const secondDate = new Date(date2); const diffDays = Math.round(Math.abs((firstDate - secondDate) / oneDay)); return diffDays; } const date1 = '2021-04-15'; const date2 = '2021-06-10'; const numDays = numberOfDays(date1, date2); console.log(`${date1} 和 ${date2} 之间有 ${numDays} 天`);
复杂度
上述代码所花费的时间是常数 O(1),因为除了输入日期的大小之外,我们只执行了固定的操作。并且算法所消耗的内存也是 O(1),因为我们在代码中只存储了天数。
结论
使用此代码,我们可以有效地计算 Javascript 中给定日期之间的天数。我们使用了一个名为 Date 的预定义对象和数学函数。在函数内部,我们给出了两个日期作为参数。代码的时间和空间复杂度为 O(1),这是常数。