JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 从Date对象减去日/月/年大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var inputDate     = '20/4/2010'.split('/');
var dateFormatted = new Date(parseInt(inputDate[2]),parseInt(inputDate[1]),parseInt(inputDate[0]));

var ExpiryDate = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);

这是我用来确定用户输入日期的到期日期的Javascript代码.目前,到期日为原始日期减去一天,原始年减去X.

这个代码的问题首先是没有虑到无效的日期.例如,如果用户提供的日期是“2010年10月10日”,则到期日为“0/10/2013”​​(假设有效期为3年).

我可以做一些像:

var inputDate = '20/4/2010'.split('/');
var day       = parseInt(inputDate[0]);
var month     = parseInt(inputDate[1]);
var year      = parseInt(inputDate[2]);

if (day < 1)
{
    if (month == ...)
    {
        day   = 31
        month = month - 1;
    }
    else
    {
        day   = 30
        month = month - 1;
    }
}

var dateFormatted = new Date(parseInt(inputDate[2]),parseInt(inputDate[0]));
var ExpiryDate    = (dateFormatted.getDate() - 1) + '/' + dateFormatted.getMonth() + '/' + (dateFormatted.getFullYear() + year);

但更多的问题出现了…首先,代码有点复杂.其次,这项检查必须在当天完成.然后一个月.有没有更简单的方法?

此外,有一些情况会涉及到我需要计算到该日期的“月末”的有效期.例如:

Expiry date is: +3 years

User date is: '14/10/2010'
Expiry date is: '31/10/2013'

我希望Date对象能支持这些计算,但根据https://developer.mozilla.org/en/JavaScript/Reference/global_objects/date,似乎没有…

解决方法

查看输入的日期是否有效日期的简单方法:
var d = Date.parse('4/20/2010');
if (isNaN(d.valueOf())) {
 alert ("bad date value"); 
}

然后,这是一个我定期使用的dateAdd函数.扩展Date对象,因此易于使用:

Date.prototype.dateAdd = function(size,value) {
    value = parseInt(value);
    var incr = 0;
    switch (sizE) {
        case 'day':
            incr = value * 24;
            this.dateAdd('hour',incr);
            break;
        case 'hour':
            incr = value * 60;
            this.dateAdd('minute',incr);
            break;
        case 'week':
            incr = value * 7;
            this.dateAdd('day',incr);
            break;
        case 'minute':
            incr = value * 60;
            this.dateAdd('second',incr);
            break;
        case 'second':
            incr = value * 1000;
            this.dateAdd('millisecond',incr);
            break;
        case 'month':
            value = value + this.getUTCMonth();
            if (value/12>0) {
                this.dateAdd('year',value/12);
                value = value % 12;
            }
            this.setUTCMonth(value);
            break;
        case 'millisecond':
            this.setTime(this.getTime() + value);
            break;
        case 'year':
            this.setFullYear(this.getUTCFullYear()+value);
            break;
        default:
            throw new Error('Invalid date increment passed');
            break;
    }
}

然后只需使用:

var d = new Date();
 d.dateAdd('day',-1).dateAdd('year',3);

T’da

大佬总结

以上是大佬教程为你收集整理的javascript – 从Date对象减去日/月/年全部内容,希望文章能够帮你解决javascript – 从Date对象减去日/月/年所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。