You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:实现服务器日期展示,周末显示周五日期的前端需求

没问题,我来帮你搞定这个日期展示的需求!咱们一步步实现,保证符合「周末显示周五日期、周一恢复正常」的要求:

第一步:补全基础数据数组

你已经写了星期和月份的数组雏形,先把它们补全完整:

var weekday = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
var allmonth = [
  "january", "february", "march", 
  "april", "may", "june", 
  "july", "august", "september", 
  "october", "november", "december"
];

第二步:完善服务器时间请求逻辑

假设你的getServerTime是异步请求(比如通过接口获取服务器日期),我这里写了两种常见的实现方式,你可以根据实际情况选:

方式1:Promise风格(适合现代fetch/axios请求)

// 模拟/替换成你的实际服务器时间请求
function getServerTime() {
  // 这里替换成你的真实接口地址,比如后端提供的获取服务器日期的接口
  return fetch('/api/get-server-date')
    .then(res => res.json())
    .then(data => new Date(data.date)) // 假设接口返回的date是ISO格式字符串
    .catch(err => {
      // 容错处理:如果服务器请求失败,用本地时间兜底(可选)
      console.error('获取服务器时间失败,临时使用本地时间', err);
      return new Date();
    });
}

方式2:回调风格(适合老式的AJAX请求)

如果你的getServerTime是回调形式的,改成这样:

// 替换成你的实际回调式请求逻辑
function getServerTime(callback) {
  // 示例:用XMLHttpRequest模拟
  const xhr = new XMLHttpRequest();
  xhr.open('GET', '/api/get-server-date', true);
  xhr.onload = function() {
    if (xhr.status === 200) {
      const data = JSON.parse(xhr.responseText);
      callback(new Date(data.date));
    } else {
      // 容错:请求失败用本地时间
      callback(new Date());
    }
  };
  xhr.send();
}

第三步:核心日期处理与渲染

这部分是关键,负责判断星期几、调整日期,最后渲染到指定的span标签:

对应Promise风格的渲染逻辑

function renderDate() {
  getServerTime().then(serverDate => {
    let displayDate = new Date(serverDate); // 复制日期对象,避免修改原数据
    const dayIndex = displayDate.getDay(); // 0=周日,1=周一...6=周六

    // 周末调整到周五日期
    if (dayIndex === 0) { // 周日:往前推2天到周五
      displayDate.setDate(displayDate.getDate() - 2);
    } else if (dayIndex === 6) { // 周六:往前推1天到周五
      displayDate.setDate(displayDate.getDate() - 1);
    }

    // 格式化日期(比如:Friday, january 12)
    const dayName = weekday[displayDate.getDay()];
    const monthName = allmonth[displayDate.getMonth()];
    const dateNum = displayDate.getDate();
    const formattedDate = `${dayName}, ${monthName} ${dateNum}`;

    // 渲染到id为currentdate的span标签
    document.getElementById('currentdate').textContent = formattedDate;
  });
}

// 页面加载完成后自动执行渲染
window.addEventListener('load', renderDate);

对应回调风格的渲染逻辑

function renderDate() {
  getServerTime(function(serverDate) {
    let displayDate = new Date(serverDate);
    const dayIndex = displayDate.getDay();

    if (dayIndex === 0) {
      displayDate.setDate(displayDate.getDate() - 2);
    } else if (dayIndex === 6) {
      displayDate.setDate(displayDate.getDate() - 1);
    }

    const dayName = weekday[displayDate.getDay()];
    const monthName = allmonth[displayDate.getMonth()];
    const dateNum = displayDate.getDate();
    const formattedDate = `${dayName}, ${monthName} ${dateNum}`;

    document.getElementById('currentdate').textContent = formattedDate;
  });
}

window.addEventListener('load', renderDate);

最后别忘了HTML结构

确保页面上有指定的span标签:

<span id="currentdate"></span>

这样就完成啦!每天页面加载时会自动获取服务器日期,周末自动显示周五的日期,周一恢复正常显示当日日期。

内容的提问来源于stack exchange,提问作者Tribhuvan Kishor Bhaskar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:11:18