【问题标题】:Are these vars converted to date correctly to use them for booking price calculations?这些变量是否正确转换为日期以用于预订价格计算?
【发布时间】:2018-05-03 01:03:40
【问题描述】:

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

我想根据 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”之类的格式更好?如果是这样,我该如何实现?

【问题讨论】:

  • 标题中问题的答案是“NO”。假设输入格式是 dd-mm-yy,那么 new Date(parts[2],parts[0]-1,parts[1]) 应该是 new Date(parts[2],parts[1]-1,parts[0]) (即你有月份和日期的转置)。此外,使用 2 位数年份也不是一个好主意。鉴于 OP 中的信息,我认为不可能回答其他 2 个问题。见How do I ask a good question?

标签: javascript date datetime type-conversion var


【解决方案1】:

回答你的两个问题:

  1. 是的,这个思路是正确的——您希望将字符串转换为Date 对象,以便您可以对这些日期进行操作。
  2. 如果您打算在日期上使用某种算术,您可能希望在这些日期上使用getTime(),它以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.");

【讨论】:

  • 谢谢,这个信息对我有很大帮助!但是价格取决于月份,所以在几毫秒内我会丢失这些信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-29
  • 2016-03-08
  • 2019-08-11
相关资源
最近更新 更多