最近在做一个时间插件,用的是jquery-daterangepicker ,现在分享一下查询时间是一年中的第几周的js方法 和 一年中有多少周的C#后台方法,默认是按照周一为一周的开始,如果一年的第一天不是周一,那么相应的天数应该算到上一年中,方法是在网上粘的,不知道最初是谁分享的了
后台方法
1 /// <summary> 2 /// 求某年有多少周 3 /// 返回 int 4 /// </summary> 5 /// <param name="strYear"></param> 6 /// <returns>int</returns> 7 public static int GetYearWeekCount(int strYear) 8 { 9 //string returnStr = ""; 10 System.DateTime fDt = DateTime.Parse(strYear.ToString() + "-01-01"); 11 int k = Convert.ToInt32(fDt.DayOfWeek);//得到该年的第一天是周几 12 if (k == 1) 13 { 14 int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear; 15 int countWeek = countDay / 7 + 1; 16 return countWeek; 17 } 18 else 19 { 20 int countDay = fDt.AddYears(1).AddDays(-1).DayOfYear; 21 int countWeek = countDay / 7; 22 return countWeek; 23 } 24 }
js方法
1 //获取日期是当年的第几周 2 function getWeekOfYear(date) { 3 //s声明一个日期未传入的日期 4 var today = new Date(date); 5 //获取当年的第一天 6 var firstDay = new Date(today.getFullYear(), 0, 1); 7 //console.log("一年的第一天是"); 8 //console.log(firstDay.Format("yyyy-MM-dd")); 9 //获取第一天是一星期的哪一天,周一是1,周日是0. 10 var dayOfWeek = firstDay.getDay(); 11 //console.log("是"); 12 //console.log(dayOfWeek); 13 //声明一个数字1 14 var spendDay = 1; 15 if (dayOfWeek == 0) { //一年的第一天为周日 16 // spendDay = 0; 17 firstDay = new Date(today.getFullYear(), 0, 2); 18 //console.log("一年的第一天是周日"); 19 //console.log("设置2号为一周开始"); 20 //console.log(firstDay); 21 } 22 else if (dayOfWeek == 1) { 23 //console.log("一年的第一天是周一"); 24 //console.log("设置1号为一周开始"); 25 firstDay = new Date(today.getFullYear(), 0, 1); 26 // console.log(firstDay) 27 } 28 else { 29 //console.log("其他情况"); 30 spendDay = 7 - dayOfWeek; 31 firstDay = new Date(today.getFullYear(), 0, 2 + spendDay); 32 // console.log(firstDay); 33 } 34 var d = Math.ceil((today.valueOf() - firstDay.valueOf()) / 86400000); 35 var result = Math.ceil(d / 7); 36 var week = (result + 1).toString(); //周 37 var year = today.getFullYear(); 38 var weekfinal = week.length < 2 ? '0' + week : week; 39 return year + "第" + weekfinal + "周"; 40 };
最后写一个js格式化时间的方法,也是烂大街了
1 Date.prototype.Format = function (fmt) { //author: meizz 2 var o = { 3 "M+": this.getMonth() + 1, //月份 4 "d+": this.getDate(), //日 5 "h+": this.getHours(), //小时 6 "m+": this.getMinutes(), //分 7 "s+": this.getSeconds(), //秒 8 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 9 "S": this.getMilliseconds() //毫秒 10 }; 11 if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 12 for (var k in o) 13 if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 14 return fmt; 15 }