你可以使用 JavaScript 的 Date 对象和数组来实现这个功能。首先,你需要定义闭馆日期和当前日期。然后,你可以使用循环来遍历未来7天的日期,并判断每一天是否属于闭馆日期。根据判断结果,你可以将日期添加到一个数组中,并返回该数组。

以下是一个实现该功能的示例代码:

function getOpenCloseDates(currentDate, closedDates) {
  var result = [];
  var oneDay = 24 * 60 * 60 * 1000; // 一天的毫秒数

  // 将字符串日期转换为Date对象
  var currentDateObj = new Date(currentDate);

  // 循环遍历未来7天的日期
  for (var i = 0; i < 7; i++) {
    // 计算当前日期的时间戳
    var timestamp = currentDateObj.getTime();

    // 根据时间戳获取对应的年、月、日
    var year = currentDateObj.getFullYear();
    var month = currentDateObj.getMonth() + 1; // 月份从0开始,需要加1
    var day = currentDateObj.getDate();

    // 格式化日期为yyyy-mm-dd
    var formattedDate = year + '-' + (month < 10 ? '0' + month : month) + '-' + (day < 10 ? '0' + day : day);

    // 判断当前日期是否属于闭馆日期
    if (closedDates.includes(formattedDate)) {
      result.push({
        'date': formattedDate,
        'status': 'closed'
      });
    } else {
      result.push({
        'date': formattedDate,
        'status': 'open'
      });
    }

    // 增加一天的时间
    timestamp += oneDay;
    currentDateObj.setTime(timestamp);
  }

  return result;
}

// 定义闭馆日期和当前日期
var closedDates = ['2023-07-01', '2023-07-02'];
var currentDate = '2023-06-29';

// 获取未来7天的开馆和闭馆日期
var dates = getOpenCloseDates(currentDate, closedDates);

console.log(dates);

该代码会输出一个数组,每个元素包含日期和状态。例如,如果闭馆日期为2023-07-01和2023-07-02,当前日期为2023-06-29,那么输出的结果会类似于:

[
  { 'date': '2023-06-29', 'status': 'open' },
  { 'date': '2023-06-30', 'status': 'open' },
  { 'date': '2023-07-01', 'status': 'closed' },
  { 'date': '2023-07-02', 'status': 'closed' },
  { 'date': '2023-07-03', 'status': 'open' },
  { 'date': '2023-07-04', 'status': 'open' },
  { 'date': '2023-07-05', 'status': 'open' }
]

你可以根据需要进行相应的修改和调整。

JavaScript 判断未来7天开闭馆日期并返回数组 - 2023年7月示例

原文地址: https://www.cveoy.top/t/topic/o31i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录