首页 > 解决方案 > 通过单击 javascript 3 值中的按钮将日期更改为下一个/上一个

问题描述

示例:< 2/7/2020 3/7/2020 4/7/2020 > 我需要单击按钮 Next 或 Previous 以同时更改所有 3 个值。

我的代码

     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();
      }     

意见

     <button id="prev"><</button>
      <span id="date" style="margin:0px 30px;"></span>
     <button id="next">></button>

标签: javascriptdate

解决方案


new Date()将返回一个 Date 对象设置当前日期。要得到昨天和明天,只需加或减一天

let today = new Date();
let yesterday = today.setDate(today.getDate() - 1);
let tomorrow =  today.setDate(today.getDate() + 1);

在您的点击处理程序中,只需today按所需方向更新并更新其他值。

您不需要编写自己的函数来格式化日期字符串,只需使用DateTimeFormat. 这已经本地化,可以考虑不同的时区。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts

let formatter = new Intl.DateTimeFormat('en-us', {   weekday: 'long',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric'})

将返回Friday, 7/3/2020


推荐阅读