这些变量是否已正确转换为最新日期以用于计算预订价格?

Are these vars converted to date correctly to use them for booking price calculations?

在 JavaScript 中,我有两个包含 "dd-mm-yy" 格式的签入日期和签出日期的变量(aankomstDatum 和 vertrekDatum)。这些变量来自带有 jQuery 日期选择器的文本输入字段。

我想根据 aankomstDatum 和 vertrekDatum 计算住宿价格,所以我仍然必须将 vars 转换为日期是正确的吗?我使用以下代码从 dd-mm-yy 开始:

var parts = aankomstDatum.split('-');
var aankomstDatumDate = new Date(parts[2],parts[0]-1,parts[1]);
document.getElementById("aankomstDate").innerHTML = aankomstDatumDate;

当我输出 aankomstDatumDate 时,我得到以下格式的工作日期:2017 年 11 月 11 日星期六 00:00:00 GMT+0100(浪漫标准时间)。

我的两个问题:

1) 这一步有必要吗?我的思路是否正确,我从日期开始,然后先将它们转换为日期,然后才能使用它们来计算预订价格?

2) 输出日期 Sat Nov 11 2017 00:00:00 GMT+0100(浪漫标准时间)可以用来计算预订价格吗?还是采用 "dd-mm-yy" 这样的格式更好?如果是这样,我该如何实现?

回答你的两个问题:

  1. 是的,这个思路是正确的——您想将字符串转换为 Date 对象,以便您可以对这些日期进行操作。
  2. 如果您计划在日期上使用某种算法,您可能希望在这些日期上使用 getTime(),returns Unix Time 中的日期(毫秒) .

例如,如果您想计算用户签到的天数 (checkoutDate - checkinDate),您可以使用这个函数,它接受两个日期对象:

function daysDifference(date1, date2) {

  let diff = date2.getTime() - date1.getTime();

  return Math.round(diff / (1000*60*60*24)); // divide by number of milliseconds in a day
}

// Example
var date1 = new Date(); // today
var date2 = new Date();

// add 5 days to date2
date2.setDate(date2.getDate() + 5); 

var daysCheckedIn = daysDifference(date1, date2);

console.log("User checked in for: " + daysCheckedIn + " days.");