【问题标题】:Date, day, month and year increment by clicking nextdate button in Javascript [duplicate]通过单击Javascript中的nextdate按钮来增加日期、日期、月份和年份[重复]
【发布时间】:2016-07-21 02:27:33
【问题描述】:

我通过单击 nextDay 和 previousDay 在我的应用程序中增加和减少日期,日期在增加但是一旦它到达像 31、30、29(feb)、28(feb)这样的月底,那么它也应该改变月份作为日期也。但它一直在增加。到目前为止,我已经尝试过以下代码

   var today = new Date();
   var days = ["Sunday","Monday","Tuesday",
                 "Wednesday","Thursday","Friday","Saturday"];
   var months = ["January","February","March",
                 "April","May","June","July","August",
                 "September","October","November","December"];
   var nextDate = 0;

函数 set_todayDate() {

document.getElementById("todaysDate").innerHTML = 
                        ""+days[today.getDay()]+",
                       "+months[today.getMonth()]+" 
                      "+today.getDate()+" 
                     "+today.getFullYear();

}

对于下一个日期和上一个日期,我只是增加和减少变量

      function nextDateMethod(){

        nextDate++;

    document.getElementById("todaysDate").innerHTML = ""+days[today.getDay()
      +dayIncrement]+ 
        ", "+months[today.getMonth()]+" 
      "+(today.getDate()+dayIncrement)+""+today.getFullYear();
    }



function prevDate(){
       nextDate--;

document.getElementById("todaysDate").
   innerHTML = months[today.getMonth()]+", 
     "+(today.getDate()+nextDate)+" "+today.getFullYear();
   }

请大家帮帮我

【问题讨论】:

  • 您的基本问题是如何将 1 天添加到日期,这里已经有答案:Add +1 to current date
  • 问题要准确!如果您期望特定的输出格式,请在您的问题中明确提及。

标签: javascript date


【解决方案1】:

试试这个:

if (!Date.now) {
  Date.now = function() {
    return new Date().getTime();
  }
}
var theDate = Date.now();

document.getElementById('date').innerText = getTheDate(theDate)

document.getElementById('prev').addEventListener("click", function() {
  theDate -= 86400000;
  document.getElementById('date').innerText = getTheDate(theDate)
})
document.getElementById('next').addEventListener("click", function() {
  theDate += 86400000;
  document.getElementById('date').innerText = getTheDate(theDate)
})

function getTheDate(getDate) {
  var days = ["Sunday", "Monday", "Tuesday",
    "Wednesday", "Thursday", "Friday", "Saturday"
  ];
  var months = ["January", "February", "March",
    "April", "May", "June", "July", "August",
    "September", "October", "November", "December"
  ];
  var theCDate = new Date(getDate);
  return days[theCDate.getDay()] + ', ' + theCDate.getDate() + '-' + months[theCDate.getMonth()] + '-' + theCDate.getFullYear();
}
<div id="date" style="height:100px; width:300px;">
</div>
<button id="prev">
  <</button>
    <button id="next">></button>

【讨论】:

  • 先生,它工作得很好.. 非常感谢.. 实际上我正在寻找这种格式。
  • 没问题!很高兴它有帮助! :)
  • 真的帮了我很多.. :-)
  • 仅代码答案没有帮助。你应该解释为什么 OP 有他们的问题以及你的答案如何解决它。
  • 我实际上采取了不同的方法并给了他/她一个解决方案。我并没有真正解决我绕道而行的问题。而且我的代码又短又简单,所以我认为没有必要解释。下次我会记住的。
【解决方案2】:

好吧,试试这个(下面是运行示例):

var today = new Date();
 date = today.getDate();
 month= today.getMonth();
year= today.getFullYear();
month = month+1;

$("#Prev").click(function(){
   date = date -1;
  if(date<1){
  month = month -1;
    if(month == 0){
      year = year -1;
      date = 31;
      month = 12;
      } else{
      if(month == 2){
      date = 28
      } else if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12){
       date = 31
      } else{
       date = 30
      }
      }
  }
  $("#displayDate")[0].innerHTML = date + "/" +  month + "/" + year;
});

$("#Next").click(function(){
   date = date + 1;
  if(date>28 && month == 2){
    date = 1;
    month = 3;
 } 
  if( date> 30 && (month == 4 || month == 6 || month == 9 || month == 11)){
  date = date +1;
    month = month +1;
  } else  if (date> 31){
  date =1; 
    month = month+1;
    if(month >12){
    year = year +1;
      month= 1; 
      date = 1;
    }
  }  
  
  $("#displayDate")[0].innerHTML = date + "/" +  month + "/" + year;
});

$("#displayDate")[0].innerHTML = date + "/" +  month + "/" + year;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><button id="Prev">Prev</button><div id="displayDate"></div><button id="Next">Next</button></div>

注意:Leap year 的条件尚未添加,如果是预期的,请告诉我,然后回答我也会添加。

希望对你有帮助:)

【讨论】:

    【解决方案3】:

    我不明白为什么您的代码应该在日期达到 30 或 31 左右时自动更新月份。您正在使用 getDate() 函数,这将返回一个数字。然后,您将其增加或减少 1。它的行为就像var x=y+z。您要么必须操作Date 对象,要么必须手动配置月份和闰年等系统。 我在http://www.w3schools.com/jsref/jsref_obj_date.asp 检查了日期引用对象,看来您没有像 C# 中的 addDays() 那样内置函数。所以我想你将不得不手动实现日历规则。 另外,请提及您在哪里声明和初始化nextDate

    【讨论】:

      【解决方案4】:

      这是一个简单的函数,可以将任意天数添加到给定日期,诀窍是使用日期对象的 setDate 方法

      function addDays(date, days) {
          var result = new Date(date);
          result.setDate(result.getDate() + days);
          return result;
      }
      

      编辑:由于日期类是可变的,您还可以添加一个方法以方便将来使用

      Date.prototype.addDays = function(days) {
          this.setDate(this.getDate() + parseInt(days));
          return this;
      };
      

      【讨论】:

      • 有趣!不知道这行得通。实际上,如果您要设置的日期大于其月份的天数,则日期对象非常聪明,可以识别。
      • 是的,我发现文档相当缺乏自己,这绝对不是一个非常直观的结构@AntonHarald
      【解决方案5】:

      有一个非常简洁的库,叫做 moment.js,它处理了大量的日期操作任务,并提供了各种方便的方式来显示日期。网页和文档都做得很好,所以我认为他们的努力值得一看。

      这就是在 moment.js 中请求的增加日期日期的工作:

      var new_date_str = moment().add(1, 'days').format("dd, MMMM, D, YYYY");
      

      查看这个小提琴以获得完整的运行示例:https://jsfiddle.net/me6pdk8L/2/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-20
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多