返回未来的 Javascript(年、月、日)
Return future Javascript (year, month, day)
我一直在尝试这个挑战。它终于可以使用过去的日期,它给了我想要的格式(年、月、日(,但不适用于未来的日期。如何重新设计此示例,使其也适用于将来的日期?截至目前,我得到一个空字符串。
function reworkedInBetweenDays(year, month, day) {
var today = new Date();
var fromdate = new Date(year, month - 1, day);
var yearsDiff = today.getFullYear() - fromdate.getFullYear();
var monthsDiff = today.getMonth() - fromdate.getMonth();
var daysDiff = today.getDate() - fromdate.getDate();
if (monthsDiff < 0 || (monthsDiff === 0 && daysDiff < 0))
yearsDiff--;
if (monthsDiff < 0)
monthsDiff += 12;
if (daysDiff < 0) {
var fromDateAux = fromdate.getDate();
fromdate.setMonth(fromdate.getMonth() + 1, 0);
daysDiff = fromdate.getDate() - fromDateAux + today.getDate();
monthsDiff--;
}
var result = [];
if (yearsDiff > 0)
result.push(yearsDiff + (yearsDiff > 1 ? " years" : " year"));
if (monthsDiff > 0)
result.push(monthsDiff + (monthsDiff > 1 ? " months" : " month"));
if (daysDiff > 0)
result.push(daysDiff + (daysDiff > 1 ? " days" : " day"));
return result.join(', ');
}
console.log(reworkedInBetweenDays(2013, 4, 8));
console.log(reworkedInBetweenDays(2014, 1, 16));
console.log(reworkedInBetweenDays(2016, 1, 31));
console.log(reworkedInBetweenDays(2017, 2, 16));
你只需要使用Math.abs()
来获取你的yearsDiff
function reworkedInBetweenDays(year, month, day) {
var today = new Date();
var fromdate = new Date(year, month - 1, day);
var yearsDiff = Math.abs(today.getFullYear() - fromdate.getFullYear()); //HERE
var monthsDiff = today.getMonth() - fromdate.getMonth();
var daysDiff = today.getDate() - fromdate.getDate();
if (monthsDiff < 0 || (monthsDiff === 0 && daysDiff < 0))
yearsDiff--;
if (monthsDiff < 0)
monthsDiff += 12;
if (daysDiff < 0) {
var fromDateAux = fromdate.getDate();
fromdate.setMonth(fromdate.getMonth() + 1, 0);
daysDiff = fromdate.getDate() - fromDateAux + today.getDate();
monthsDiff--;
}
var result = [];
if (yearsDiff > 0)
result.push(yearsDiff + (yearsDiff > 1 ? " years" : " year"));
if (monthsDiff > 0)
result.push(monthsDiff + (monthsDiff > 1 ? " months" : " month"));
if (daysDiff > 0)
result.push(daysDiff + (daysDiff > 1 ? " days" : " day"));
return result.join(', ');
}
console.log(reworkedInBetweenDays(2013, 4, 8));
console.log(reworkedInBetweenDays(2014, 1, 16));
console.log(reworkedInBetweenDays(2016, 1, 31));
console.log(reworkedInBetweenDays(2017, 2, 16));
在
末尾添加此代码可以工作
if (yearsDiff < 0)
result.push(yearsDiff*(-1) + (yearsDiff*(-1) > 1 ? " years in the future" : " year in the future"));
if (monthsDiff < 0)
result.push(monthsDiff*(-1) + (monthsDiff*(-1) > 1 ? " months in the future" : " month in the future"));
if (daysDiff < 0)
result.push(daysDiff*(-1) + (daysDiff*(-1) > 1 ? " days in the future" : " day in the future"));
monthsDiff
和 daysDiff
都是零,yearsDiff
是 -1,这意味着它们都没有触发底部的 if 语句。当所有这些值为零或负数时,您需要添加一些代码来处理。
相关文章:
- 正在设置未来的Javascript日期
- javascript承诺和未来类似于C++
- 使用 Javascript 预测未来的趋势数据
- 返回未来的 Javascript(年、月、日)
- Javascript:替换 html 中的字符串,而不破坏未来事件处理程序的元素
- 使用 JavaScript Date 对象处理未来和过去的日期和时间
- JavaScript:任何计划在未来版本中实现线程
- Javascript为未来日期添加时间
- JavaScript中的未来日期代码问题
- 使用Javascript获取基于未来日期的上一个日期
- 在下拉列表中使用javascript显示未来日期.(每次动态)
- javascript date()对象,在未来的8天内
- 如何将当前日期与未来日期进行比较并用javascript进行验证
- 尝试创建带有未来日期的 Javascript 时钟
- 在javascript中显示未来5天(星期日除外)
- 在javascript中计算现在和未来时间之间的时间差
- 为(潜在的)未来浏览器汇编语言优化优化JavaScript的最佳实践是什么?
- 通过与javascript中的今天's日期进行比较,允许今天's日期和未来日期
- JavaScript音频的未来
- JavaScript日历日期选择器不存储未来日期