我正试图弄清楚如何减去两个不同的日期来获得余数。根据我的Google搜索,这似乎应该很简单,但是我的代码无法正常工作。
const options = { year: 'numeric', month: 'numeric', day: 'numeric' };
let today = new Date();
today = today.toLocaleDateString('en-US', options); // '2/20/2019'
dueDate = new Date(dueDate[0]);
dueDate = dueDate.toLocaleDateString('en-US', options); // '12/15/2019'
daysLeft = today.setDate(today.setDate() - dueDate); // Being declared as a let outside the scope block
我收到的错误消息是:Uncaught (in promise) TypeError: today.setDate is not a function
更新:
可能的重复答案几乎帮了我大忙,但并没有考虑多年,所以2/20/2019 - 2/1/2001
输出19
,这是不正确的。
答案 0 :(得分:3)
您可以使用直接数学。
let today = new Date();
let dueDate = new Date('12/15/2019');
let difference = Math.abs(Math.round((today.getTime()-dueDate.getTime())/1000/24/60/60));
console.log(difference);
这样,我们得到的差值以毫秒为单位,除以1000得到秒数,除以60得到分钟数,再除以60得到小时数,最后除以24得到天数差。
答案 1 :(得分:1)
主要问题是,您将日期today
解析为字符串,然后在其上调用方法,这自然会失败。您应该将today.toLocaleDateString('en-US', options)
的值(它是一个字符串)分配给另一个变量,然后对实际上具有Date对象的变量使用方法。假设其余代码都可以。
答案 2 :(得分:1)
moment.locale('en-US'); // setting locale
var today = moment(); // current date
var dueDate = moment('12/15/2019', "MM/DD/YYYY"); // due date
console.log(Math.abs(dueDate.diff(today, 'days'))); // difference in days, possible values are months, years...
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>