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

如何用JavaScript从日期选择器获取星期几并切换显示状态

让我一步步帮你解决这两个问题,顺便修正你代码里的小问题:

问题1:如何使用JavaScript从日期选择器中获取所选日期对应的星期几?

当你用jQuery UI Datepicker时,changeDate事件返回的e.date是原生JavaScript Date对象,你可以用它的getDay()方法获取星期几——注意是小写的g(你代码里写的GetDay()是错误的,JS方法名严格区分大小写)。

getDay()的返回值范围是0到6,对应关系:

  • 0 = 周日
  • 1 = 周一
  • 2 = 周二
  • 3 = 周三
  • 4 = 周四
  • 5 = 周五
  • 6 = 周六

举个实用的例子,获取后转换成中文星期几并打印:

$("#datepicker").datepicker({ 
  autoclose: true, 
  todayHighlight: true 
}).on('changeDate', function(e) {
  if (e.date) {
    const dayOfWeek = e.date.getDay();
    const weekNames = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
    console.log('所选日期是:' + weekNames[dayOfWeek]);
  }
});
问题2:根据所选日期的星期几切换显示状态

你的需求是:周六或周日显示openstatus1,其他日期显示openstatus。先指出你原代码里的几个关键问题:

  1. 方法名错误:GetDay()应该是getDay()
  2. 条件逻辑错误:e.date.getDay()==6 && e.date.getDay()==7——一个日期不可能同时是周六和周日,而且getDay()返回最大值是6(周六),周日对应的是0,不是7,应该用||(或)来判断
  3. toggle()方法的问题:toggle()是切换元素显示状态(显示变隐藏,隐藏变显示),这可能不符合需求,应该用show()和hide()明确控制显示/隐藏

修正后的完整代码如下:

$("#datepicker").datepicker({ 
  autoclose: true, 
  todayHighlight: true 
}).on('changeDate', function(e) {
  if (e.date) {
    const dayOfWeek = e.date.getDay();
    // 判断是否是周日(0)或周六(6)
    if (dayOfWeek === 0 || dayOfWeek === 6) {
      $('.openstatus').hide();
      $('.openstatus1').show();
    } else {
      $('.openstatus').show();
      $('.openstatus1').hide();
    }
  }
});

对应的表单结构(补充你未写完的部分):

<div id="datepicker" class="input-group" data-date-format="mm-dd-yyyy">
  <input type="text" class="form-control">
  <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>
</div>

<!-- 状态显示元素,默认隐藏周末状态 -->
<div class="openstatus">工作日状态</div>
<div class="openstatus1" style="display: none;">周末状态</div>

内容的提问来源于stack exchange,提问作者Muziwenhlanhla Dlamini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:14:25