Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 向日期字符串添加1或2天_Javascript_Date - Fatal编程技术网

Javascript 向日期字符串添加1或2天

Javascript 向日期字符串添加1或2天,javascript,date,Javascript,Date,我有一个字符串,可能是date=“10/08/2011”英语时间样式 这是一个简单的字符串,所以我需要能够添加1或2天到它 我已经尝试了一些方法,但无法解决问题,因为我通常是一个PHP的家伙,而不是JavaScript 非常感谢您的帮助 谢谢 背风 更新 为什么这看起来这么难,我已经被困在这上面一个小时了。。。。。我想给代码一个简单的字符串,它是mm/dd/yyy-10/08/2011,我想返回类似11/08/2011的值 为什么这么难??这就是为什么我讨厌javascript而更喜欢PHP:-

我有一个字符串,可能是
date=“10/08/2011”英语时间样式

这是一个简单的字符串,所以我需要能够添加1或2天到它

我已经尝试了一些方法,但无法解决问题,因为我通常是一个PHP的家伙,而不是JavaScript

非常感谢您的帮助

谢谢

背风

更新

为什么这看起来这么难,我已经被困在这上面一个小时了。。。。。我想给代码一个简单的字符串,它是mm/dd/yyy-10/08/2011,我想返回类似11/08/2011的值


为什么这么难??这就是为什么我讨厌javascript而更喜欢PHP:-(

您需要将字符串转换为日期对象。 使用此函数,您可以调用.getDate()和setDate()函数来修改日期

但要实现这一点,日期必须采用以下格式之一:

  • 年月日
  • yyyy/MM/dd
  • 年月日
  • 年月日
  • 年月日
  • 所以,在转换之前,您可能必须在字符串中切换日期和月份,因为我不确定月份或日期是否是您的第一个数字

    对于欧洲日期,您可以使用以下内容将字符串更改为正确的格式:

    var date = "10/08/2011";
    var eurDate = date.substr(3,2) + "/" + date.substr(0,2) + "/" + date.substr(6);
    
    可以帮助您完成此任务的链接:

    编辑:

    JSFiddle提供了一个示例:

    要添加2天:

    var theDate = new Date("10/28/2011");
    theDate.setDate(theDate.getDate()+2);
    
    试试这个

    var date =  new Date("10/08/2011");
    
    date = new Date(date.setDate(date.getDate()+1));//1 represents 1 day to add so you specify as per your need
    
    var dateStr = date.getDay() + '/' + (date.getMonth() + 1) + '/' + date.getUTCFullYear();
    

    并不是那么复杂:

    //convert string to date
    var dattmp = "10/08/2011".split('/').reverse().join('/');
    var nwdate =  new Date(dattmp);
    
    // to add 1 day use:
    nwdate.setDate(nwdate.getDate()+1);
    
    //to retrieve the new date use
    [nwdate.getDate(),nwdate.getMonth()+1,nwdate.getFullYear()].join('/');
    
    //all in one:
    function dateAddDays( /*string dd/mm/yyyy*/ datstr, /*int*/ ndays){
      var dattmp = datstr.split('/').reverse().join('/');
      var nwdate =  new Date(dattmp);
      nwdate.setDate(nwdate.getDate() + (ndays || 1));
      return [ zeroPad(nwdate.getDate(), 10)
              ,zeroPad(nwdate.getMonth()+1, 10)
              ,nwdate.getFullYear() ].join('/');
    }
    
    //function to add zero to date/month < 10
    function zeroPad(nr, base){
      var len = (String(base).length - String(nr).length) + 1;
      return len > 0? new Array(len).join('0') + nr : nr;
    }
    
    //examples
    console.log(dateAddDays("10/08/2011"));     //=> 11/08/2011
    console.log(dateAddDays("10/08/2011", -5)); //=> 05/08/2011
    

    可能有用的小型datetime处理对象。

    必须强制执行一个字符串,将其解释为日期-月-年或月-日-年,否则将取决于用户的设置

    可以从字符串中组合日期,以确保日期-月份格式:

    Date.fromDM=function(string){
        var A= string.match(/([1-9]\d*)/g);
        if(A.length!== 3) throw 'bad date'; 
        return new Date(A[2]*1, A[1]-1, A[0]*1);
    }
    Date.fromMD=function(string){
        var A= string.match(/([1-9]\d*)/g);
        if(A.length!== 3) throw 'bad date'; 
        return new Date(A[2]*1, A[0]-1, A[1]*1);
    }
    
    
    
    /*  Date.fromDM('10,08,2011')
    return value: (Date)
    Wed Aug 10 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
    */
    
    /*Date.fromMD('10,08,2011')
    return value: (Date)
    Sat Oct 08 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
    */
    

    我试了一下,结果出来了

    var-dat=新日期('2018-03-16');
    //使用toISOString()获取字符串值2018-03-16T16:38:00.000Z
    //子串(0,10)得到2018-03-16
    //与2018年3月16日相反
    var ret=dat.toISOString().substring(0,10).split('-').reverse()
    //重新排列到您想要的任何格式
    var t=ret[0];
    ret[0]=ret[1];
    ret[1]=t;
    //结果
    
    console.log(ret.join('/')
    从外观上看,这给了我unix中的时间戳:-(argh-太接近了,但我需要能够以欧式风格完成它…dd/mm/yyyyy有什么想法吗?你可以用子字符串尝试我的方法(编辑到我的答案中)。它可以切换日期和月份。另一方面,Kooilnc的版本也可以正常工作,如果您使用的是欧洲日期,它会反转字符串,将其转换为有效格式。@ShankerSangoli-这只会给我0/10/2011-我正要给up@Lee:之前只需使用简单函数转换字符串即可。My或Kooilnc的解决方案ld可以很好地将其转换为正确的格式->从外观上看,这只是在unix中给了我时间戳:-(要返回字符串,可以执行
    var theDateString=(theDate.getMonth()+1)+'/'+theDate.getDate()+'/'+theDate.getCfullyear()
    非常感谢Kooilnc,这正是我在寻找的注意,如果你跨越一个月或一年的过渡,上面的简单解决方案将不起作用。你真的想使用Date对象…@Mike,当然-这就是为什么使用Date对象是有意义的。我建议不要使用
    datePlus1
    解决方案,但这是一种可能性。加法的优先级高于逻辑OR,因此您需要在其中添加一些括号:nwdate.setDate(nwdate.getDate()+(ndays | 1));这是否回答了您的问题?
    Date.fromDM=function(string){
        var A= string.match(/([1-9]\d*)/g);
        if(A.length!== 3) throw 'bad date'; 
        return new Date(A[2]*1, A[1]-1, A[0]*1);
    }
    Date.fromMD=function(string){
        var A= string.match(/([1-9]\d*)/g);
        if(A.length!== 3) throw 'bad date'; 
        return new Date(A[2]*1, A[0]-1, A[1]*1);
    }
    
    
    
    /*  Date.fromDM('10,08,2011')
    return value: (Date)
    Wed Aug 10 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
    */
    
    /*Date.fromMD('10,08,2011')
    return value: (Date)
    Sat Oct 08 2011 00:00:00 GMT-0400 (Eastern Daylight Time)
    */