用户输入日期和今天日期之间的增量时间的 JS 日期计算器
JS Date calculator of delta time betwen a user entered date and today's date
该项目的想法很简单:一个从用户那里检索输入的计算器,希望是日期时间格式,尽管我不知道该怎么做,所以我现在正在检索整数并构造一个日期他们,它减去今天的日期给我剩下的天数,直到所说的输入日期。是的,这可能很简单,但我不知道我现在做错了什么我在 HTML NaN 中得到了一个值。所以再次明确一点,用户输入一个日期,JS 将计算距离该日期还有多少天。请尽可能地帮助我,任何一点帮助对我来说都很重要。
这是我目前的代码:
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
var y = prompt("Enter the year")
var yy = prompt("Enter the month")
var yyy = prompt("Enter the day")
today = mm + '/' + dd + '/' + yyyy;
const oneDay = 24 * 60 * 60 * 1000;
var oneDate = new Date(y, yy, yyy);
var diffDays = Math.round(Math.abs((oneDate - today) / oneDay));
document.write(diffDays)
您可以使用 Dayjs 库轻松完成此操作。它只有 2KB,因此它不会使您的页面变大很多,但会让您的生活变得更简单。
这是浏览器的完整示例:
dayjs.extend(window.dayjs_plugin_duration)
dayjs.extend(window.dayjs_plugin_relativeTime)
const now = dayjs();
const year = prompt("Enter the year");
const month = prompt("Enter the month");
const day = prompt("Enter the day");
const userDate = dayjs(new Date(year, month - 1, day));
const difference = dayjs.duration(now.diff(userDate)).asDays();
document.write(`${Math.round(difference, 0)} days`);
<script src="https://unpkg.com/dayjs@1.8.30/dayjs.min.js"></script>
<script src="https://unpkg.com/dayjs@1.8.30/plugin/relativeTime.js"></script>
<script src="https://unpkg.com/dayjs@1.8.30/plugin/duration.js"></script>
你其实很亲近。您无缘无故地将一个字符串重新分配给 today,只是将其保留为日期。但是因为你想要一整天,所以你需要将时间归零。
此外,从 yy 中减去 1,因为它将是日历月份编号,而不是 ECMAScript 月份编号,因此:
var today = new Date();
// zero the time
today.setHours(0,0,0,0);
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
var y = prompt("Enter the year")
var yy = prompt("Enter the month")
var yyy = prompt("Enter the day")
// don't do this
//today = mm + '/' + dd + '/' + yyyy;
const oneDay = 24 * 60 * 60 * 1000;
// Subtract 1 from month number
var oneDate = new Date(y, yy - 1, yyy);
var diffDays = Math.round(Math.abs((oneDate - today) / oneDay));
document.write(diffDays)
该项目的想法很简单:一个从用户那里检索输入的计算器,希望是日期时间格式,尽管我不知道该怎么做,所以我现在正在检索整数并构造一个日期他们,它减去今天的日期给我剩下的天数,直到所说的输入日期。是的,这可能很简单,但我不知道我现在做错了什么我在 HTML NaN 中得到了一个值。所以再次明确一点,用户输入一个日期,JS 将计算距离该日期还有多少天。请尽可能地帮助我,任何一点帮助对我来说都很重要。
这是我目前的代码:
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
var y = prompt("Enter the year")
var yy = prompt("Enter the month")
var yyy = prompt("Enter the day")
today = mm + '/' + dd + '/' + yyyy;
const oneDay = 24 * 60 * 60 * 1000;
var oneDate = new Date(y, yy, yyy);
var diffDays = Math.round(Math.abs((oneDate - today) / oneDay));
document.write(diffDays)
您可以使用 Dayjs 库轻松完成此操作。它只有 2KB,因此它不会使您的页面变大很多,但会让您的生活变得更简单。
这是浏览器的完整示例:
dayjs.extend(window.dayjs_plugin_duration)
dayjs.extend(window.dayjs_plugin_relativeTime)
const now = dayjs();
const year = prompt("Enter the year");
const month = prompt("Enter the month");
const day = prompt("Enter the day");
const userDate = dayjs(new Date(year, month - 1, day));
const difference = dayjs.duration(now.diff(userDate)).asDays();
document.write(`${Math.round(difference, 0)} days`);
<script src="https://unpkg.com/dayjs@1.8.30/dayjs.min.js"></script>
<script src="https://unpkg.com/dayjs@1.8.30/plugin/relativeTime.js"></script>
<script src="https://unpkg.com/dayjs@1.8.30/plugin/duration.js"></script>
你其实很亲近。您无缘无故地将一个字符串重新分配给 today,只是将其保留为日期。但是因为你想要一整天,所以你需要将时间归零。
此外,从 yy 中减去 1,因为它将是日历月份编号,而不是 ECMAScript 月份编号,因此:
var today = new Date();
// zero the time
today.setHours(0,0,0,0);
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
var y = prompt("Enter the year")
var yy = prompt("Enter the month")
var yyy = prompt("Enter the day")
// don't do this
//today = mm + '/' + dd + '/' + yyyy;
const oneDay = 24 * 60 * 60 * 1000;
// Subtract 1 from month number
var oneDate = new Date(y, yy - 1, yyy);
var diffDays = Math.round(Math.abs((oneDate - today) / oneDay));
document.write(diffDays)