JS计算指定日期是距今的第几周,星期几
无意中在百度知道上发现这样一个问题,就抽时间见写了一个函数。
首先我们需要明确,既然是指定日期距今的第几周,那么就要知道指定的日期是什么,而且是不能确定的,会根据使用者不同而得到不同的日期,所以我们需要将这个日期设置为参数,由使用者决定。
下面我们一起来看一下这段代码:
(function(){
/*
* 说明:
* 一周的起始计算方式不同国家有所不同,很多其他国家将周日作为一周的开始
* 本代码使用中国习惯,将周一作为每周的开始
* 特此说明
*/
function TodayInfo(start) {
var WEEKLEN = 7, // 一周7天为常量
WEEKDAYS = ["日", "一", "二", "三", "四", "五", "六"],
weekInfo = {"week": null, "day": null}, // 初始化返回信息,默认第null周,星期null
oneDay = 24 * 60 * 60 * 1000, // 一天的毫秒时长
weekLeave, // 开学当天所在周剩余天数
weekStart, // 开学当天start是星期几
today, // 今天
dateDiff, // 今天与开学当天日期差
sDate; //开学之日,日期对象
var rDateStr = /\d{4}[\/-]\d{1,2}[\/-]\d{1,2}/g; // 简单的日期格式校验:2013/12/19
if (!rDateStr.test(start)) {
alert("请使用合法的开学日期!!!");
return weekInfo;
}
sDate = new Date(start.replace("-", "/"));
weekStart = sDate.getDay();
weekStart = weekStart === 0 ? 7 : weekStart; // JS中周日的索引为0,这里转换为7,方便计算
weekLeave = WEEKLEN - weekStart;
today = new Date();
weekInfo.day = WEEKDAYS[today.getDay()];
today = new Date(today.getFullYear() + "/" + (today.getMonth() + 1) + "/" + today.getDate());
dateDiff = today - sDate;
if (dateDiff < 0) {
alert("别开玩笑了,你还没开学呢!!!");
return weekInfo;
}
dateDiff = parseInt(dateDiff / oneDay);
weekInfo.week = Math.ceil((dateDiff - weekLeave) / WEEKLEN) + 1;
return weekInfo;
}
// 测试结果
var td = TodayInfo("2013/12/16");
console.log("今天是自2013/12/16日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
td = TodayInfo("2013/11/11");
console.log("今天是自2013/11/11日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
td = TodayInfo("2013/09/01");
console.log("今天是自2013/09/01日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
td = TodayInfo("2013/12/29");
console.log("今天是自2013/12/29日,开学以来的第 " + td.week + " 周,今天星期" + td.day);
})();
这里在跟大家介绍一些关于Date对象的使用技巧:
- 获取前一月的总天数
var a = new Date(), total = 0;
a.setDate(0);
total = a.getDate(); // - 计算两个日期之间的时间差:
var total = new Date('2014/10/13') - new Date();
JS计算指定日期是距今的第几周,星期几的更多相关文章
- js计算指定日期的下一年的日期
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Js计算指定日期加上多少天,加多少月,加多少年的日期
function DateAdd(interval,number,date) { /* * 功能:实现VBScript的DateAdd功能. * 参数:interval,字符串表达式,表示要添加的时间 ...
- Js计算指定日期
function DateAdd(interval,number,date) { /* * 功能:实现VBScript的DateAdd功能. * 参数:interval,字符串表达式,表示要添加的时间 ...
- HIVE 计算指定日期本周的第一天和最后一天
-- 计算指定日期本周的第一天和最后一天 select day ,dayofweek(day) as dw1 ,date_add( - dayofweek(day)) as Su_s -- 周日_st ...
- delphi中计算指定日期是该月第几周的函数
NthDayOfWeek 计算并返回指定日期是该月第几周 Unit:DateUtils function NthDayOfWeek(const AValue: TDateTime): Word; ...
- JavaScript计算指定日期与当前日期的相差天数
java中处理2个时间段相差几天很容易,直接调相关方法就行,不过js处理这类问题稍微有点不易,项目开发中也用到了,如下: 1 2 3 4 5 6 7 8 9 10 11 12 //计算两个日期天数差的 ...
- js实现指定日期增加指定月份
首先,大致思路为: 1. 先将字符串格式的时间类型转化为Date类型 2. 再将Date类型的时间增加指定月份 3. 最后将Date类型的时间在转化为字符串类型 1. 先将字符串格式的时间类型转化为 ...
- js 获取指定日期
查询几天后的js代码,如果查询当天的日期 if($("input[name='startTime']").val()==""){ $("input[n ...
- JS 获取指定日期的前几天,后几天
function getNextDate(date,day) { var dd = new Date(date); dd.setDate(dd.getDate() + day); var y = dd ...
随机推荐
- 第k大数问题
解法1: 我们可以对这个乱序数组按照从大到小先行排序,然后取出前k大,总的时间复杂度为O(n*logn + k). 解法2: 利用选择排序或交互排序,K次选择后即可得到第k大的数.总的时间复杂度为O( ...
- rootkit的检测工具使用(chkrootkit和rootkit hunter)
信息安全 这两天突然发现我们的服务器产生大量DNS解析连线.为了查明问题,就下载网上找工具检查问题所在.用了两个工具,一个chkrootkit,另外一个rootkit huntur. ...
- HDU-4952 Number Transformation
http://acm.hdu.edu.cn/showproblem.php?pid=4952 Number Transformation Time Limit: 2000/1000 MS (Java/ ...
- phpmyadmin万能密码
影响版本:2.11.3 / 2.11.4 利用方法:用户名处写入‘localhost’@'@”则登录成功. (注意全部是英文标点符号,最后一个为英文双引号)
- EXCEL VBA 选择文件对话框
Sub XXX() Dim arr() arr = Application.GetOpenFilename("所有支付文件 (*.xls;*.xlsx;*.csv),*.xls;*.xlsx ...
- java通过解析文件获取apk版本等信息
import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import ...
- android十六进制颜色代码转换为int类型数值
android开发中将十六进制颜色代码转换为int类型数值方法:Color.parseColor("#00CCFF")返回int数值;
- 只有在配置文件中或 Page 说明会 enableSessionState 至 true 时刻,能够使用会话状态。另外,还要确保应用程序配置 // 段包含 System.Web.SessionSta
首先,弄清楚我们的目的,我的目标是验证用户登录.那是,Session["userName"]!=null 在ok该 起初,我是这么写的,结果给出,提示如果上述错误标题,在调查的很长 ...
- TCP 函数
[root@localhost tt]# man listen LISTEN() Linux Programmer’s Manual LISTEN() NAME listen - listen for ...
- 通过MultipleOutputs写到多个文件
MultipleOutputs 类可以将数据写到多个文件,这些文件的名称源于输出的键和值或者任意字符串.这允许每个 reducer(或者只有 map 作业的 mapper)创建多个文件. 采用name ...