JS计算指定日期是距今的第几周,星期几

无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数。

首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需要将这个日期设置为参数,由使用者决定。

下面我们一起来看一下这段代码:

 1 (function(){
 2     /*
 3      * 说明:
 4      * 一周的起始计算方式不同国家有所不同,很多其他国家将周日作为一周的开始
 5      * 本代码使用中国习惯,将周一作为每周的开始
 6      * 特此说明
 7      */
 8
 9     function TodayInfo(start) {
10         var WEEKLEN = 7, // 一周7天为常量
11             WEEKDAYS = ["日", "一", "二", "三", "四", "五", "六"],
12             weekInfo = {"week": null, "day": null}, // 初始化返回信息,默认第null周,星期null
13             oneDay = 24 * 60 * 60 * 1000, // 一天的毫秒时长
14             weekLeave, // 开学当天所在周剩余天数
15             weekStart, // 开学当天start是星期几
16             today, // 今天
17             dateDiff, // 今天与开学当天日期差
18             sDate; //开学之日,日期对象
19         var rDateStr = /\d{4}[\/-]\d{1,2}[\/-]\d{1,2}/g; // 简单的日期格式校验:2013/12/19
20         if (!rDateStr.test(start)) {
21             alert("请使用合法的开学日期!!!");
22             return weekInfo;
23         }
24         sDate = new Date(start.replace("-", "/"));
25         weekStart = sDate.getDay();
26         weekStart = weekStart === 0 ? 7 : weekStart; // JS中周日的索引为0,这里转换为7,方便计算
27
28         weekLeave = WEEKLEN - weekStart;
29         today = new Date();
30         weekInfo.day = WEEKDAYS[today.getDay()];
31         today = new Date(today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate());
32         dateDiff = today - sDate;
33         if (dateDiff < 0) {
34             alert("别开玩笑了,你还没开学呢!!!");
35             return weekInfo;
36         }
37         dateDiff = parseInt(dateDiff / oneDay);
38         weekInfo.week = Math.ceil((dateDiff - weekLeave) / WEEKLEN) + 1;
39         return weekInfo;
40     }
41     // 测试结果
42     var td = TodayInfo("2013/12/16");
43     console.log("今天是自2013/12/16日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
44     td = TodayInfo("2013/11/11");
45     console.log("今天是自2013/11/11日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
46     td = TodayInfo("2013/09/01");
47     console.log("今天是自2013/09/01日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
48     td = TodayInfo("2013/12/29");
49     console.log("今天是自2013/12/29日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
50 })();

这里在跟大家介绍一些关于Date对象的使用技巧:

  1. 获取前一月的总天数

    1 var a = new Date(), total = 0;
    2 a.setDate(0);
    3 total = a.getDate(); // 30
  2. 计算两个日期之间的时间差:

    1 var total = new Date(‘2014/10/13‘) - new Date();
时间: 2025-01-08 05:07:40

JS计算指定日期是距今的第几周,星期几的相关文章

Js计算指定日期加上多少天,加多少月,加多少年的日期

function DateAdd(interval,number,date) { /* * 功能:实现VBScript的DateAdd功能. * 参数:interval,字符串表达式,表示要添加的时间间隔. * 参数:number,数值表达式,表示要添加的时间间隔的个数. * 参数:date,时间对象. * 返回:新的时间对象. * var now = new Date(); * var newDate = DateAdd( "d ",5,now); *---------------

js计算指定日期的下一年的日期

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var d2=new Date("2012-03-1"); d2.setFullYear(d2.getFullYear()+1); d2.setDate(d2.getDate(

计算指定日期的前N个月日期

/**     * 计算指定日期的前N个月日期     * @param type $time      * @param int $month_length     * @return date     */    public function calLMP($time,$month_length ){        $r = date('Y-m-d',strtotime('-'.$month_length.'month',strtotime($time)));        list($e

Python三种方法计算指定日期是今年的第几天

今天早上和腾讯面试官进行了视频面试,由于音量和网络以及我的垃圾电脑的原因,个人感觉黄了... 最后面试官给了我一道简单的计算题:指定日期是今年的第几年 由于电脑卡到打字都打不动,我勉勉强强写了一点,虽然面试官知道了我的想法也了解我的设备情况,最后没让我写完 但是心里惭愧还是时候补齐了...话不多说回到主题吧 首先是输入的问题,个人认为分别输入年月份是一件很初级的要求,就实现了形如“2020-3-26”的字符串解析的两种方法,代码如下: 1 def cal_date_str_spilt(date)

JavaScript计算指定日期与当前日期的相差天数

java中处理2个时间段相差几天很容易,直接调相关方法就行,不过js处理这类问题稍微有点不易,项目开发中也用到了,如下: 1 2 3 4 5 6 7 8 9 10 11 12 //计算两个日期天数差的函数,通用 function dateDiff(sDate2) {     var sDate1=new Date().pattern("yyyy-MM-dd");     sDate2=LEx.util.Format.formatDate(sDate2,"yyyy-MM-dd&

js 获取指定日期

查询几天后的js代码,如果查询当天的日期 if($("input[name='startTime']").val()==""){ $("input[name='startTime']").val(FormatDate(0)); } 如果查询昨天的日期 if($("input[name='startTime']").val()==""){ $("input[name='startTime']&quo

js计算输入日期的前一天,后一天(上一日,下一日)。兼容safari

//下一天function getNextday(){var today=document.getElementById("lang0").value;var t=new Date(today);var tm=new Date(t.getFullYear(),t.getMonth(),t.getDate()+1); var m='0'+(tm.getMonth()+1);var d='0'+tm.getDate() document.getElementById("lang0

获取指定日期是一年的第几周

pytho代码 print datetime.datetime(2006,9,4).isocalendar()[1] #Gregorian时间 import datetime datetime.datetime(2015,1,5).strftime('%U')    #星期天做为州的开始 datetime.datetime(2015,1,5).strftime('%W')    #星期一做为州的开始 lua代码 print(os.date("%W", os.date(os.time{y

JavaScript 计算指定月份有多少天

用 js 画工作日历的时候,需要用 js 计算指定月份一共有多少天 在网上找了些方法,都比较繁琐,后来灵机一动,想到一个偷懒的办法,分享一下 一.原理分析 要想得到某月有多少天,只需要获取到当月最后一天的日期就行了 围绕这一思路,灵活调用 setMonth(),getMonth(),setDate(),getDate(),计算出所需日期 二.代码实现 function getMonthLength(date) { let d = new Date(date) // 将日期设置为下月一号 d.se