为了账号安全,请及时绑定邮箱和手机立即绑定

用户输入日期和今天日期之间的增量时间的 JS 日期计算器

用户输入日期和今天日期之间的增量时间的 JS 日期计算器

墨色风雨 2022-12-02 16:39:07
该项目的想法很简单:一个从用户那里检索输入的计算器,希望是日期时间格式,尽管我不知道该怎么做,所以我现在正在检索整数并从中构造一个日期,然后减去今天的日期给我说输入日期之前剩下的天数。是的,这可能很简单,但我不知道我做错了什么,因为我现在在我的 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)
查看完整描述

2 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

你实际上非常接近。您无缘无故地将一个字符串重新分配给今天,只是将其保留为日期。但是因为你想要一整天,你需要将时间归零。


此外,从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)


查看完整回答
反对 回复 2022-12-02
?
慕斯王

TA贡献1864条经验 获得超2个赞

您可以使用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>


查看完整回答
反对 回复 2022-12-02
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号