一些关于日期的JS

1.格式化日期,例如yyyy-MM-dd

/**
 * 格式化日期,例如yyyy-MM-dd
 */
Date.prototype.format = function(fmt) {
	var o = {
		"M+" : this.getMonth() + 1,
		"d+" : this.getDate(),
		"h+" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12,
		"H+" : this.getHours(),
		"m+" : this.getMinutes(),
		"s+" : this.getSeconds(),
		"q+" : Math.floor((this.getMonth() + 3) / 3),
		"S" : this.getMilliseconds()
	};
	var week = {
		"0" : "\u65e5",
		"1" : "\u4e00",
		"2" : "\u4e8c",
		"3" : "\u4e09",
		"4" : "\u56db",
		"5" : "\u4e94",
		"6" : "\u516d"
	};
	if (/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	}
	if (/(E+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
	}
	for ( var k in o) {
		if (new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
					: (("00" + o[k]).substr(("" + o[k]).length)));
		}
	}
	return fmt;
}
//console.info(new Date().format('yyyy-MM-dd HH:mm:ss EEE'))
//2022-07-25 09:51:15 星期一

2.获取这周的周一日期

function getFirstDayOfWeek (date) {
	var weekday = date.getDay()||7; //獲取星期幾,getDay()返回值是 0(周日) 到 6(周六) 之間的一個整數。0||7為7,即weekday的值為1-7
	date.setDate(date.getDate()-weekday+1);//往前算(weekday-1)天,年份、月份會自動變化
	return date.format('yyyy-MM-dd');
}
//console.info(getFirstDayOfWeek(new Date('2022-07-22')))
//2022-07-18

3.得到下周的最后一天(周日)

function getNextLastDateOfWeek(theDate){
	var b=theDate.getDate();
	b=b-theDate.getDay();
	theDate.setDate(b+14); //下周最後一天
	return theDate.format('yyyy-MM-dd');
}
//console.info(getNextLastDateOfWeek(new Date('2022-07-22')))
//2022-07-31

4.根据日期查询在本年度的第几周

function getYearWeek(endDate) {
    //本年的第一天
    var beginDate = new Date(endDate.getFullYear(), 0, 1);
    //星期從0-6,0代表星期天,6代表星期六
    var endWeek = endDate.getDay();
    if (endWeek == 0) endWeek = 7;
    var beginWeek = beginDate.getDay();
    if (beginWeek == 0) beginWeek = 7;
    //計算兩個日期的天數差
    var millisDiff = endDate.getTime() - beginDate.getTime();
    var dayDiff = Math.floor(( millisDiff + (beginWeek - endWeek) * (24 * 60 * 60 * 1000)) / 86400000);
    return Math.ceil(dayDiff / 7) + 1;
}
//console.info(getYearWeek(new Date('2022-07-22')))
//30

5.查询一年有多少周

function getDate(year) {
	// 一年第一天是周幾
	var first = new Date(year, 0, 1).getDay()
	// 計算一年有多少天
	if ((year % 4 == 0 && year % 100 != 0)
			|| (year % 100 == 0 && year % 400 == 0)) {
		var allyears = 366
	} else {
		var allyears = 365
	}
	// 計算一年有多少周
	var week = parseInt((allyears + first) / 7)
	if (((allyears + first) % 7) != 0) {
		week += 1
	}
	return week
}
//console.info(getDate(2022))
//53

6.毫秒转换为几天几小时几分钟

function timeConversion(data){
      const useTime = data;
      const days = Math.floor(useTime / (1000 * 60 * 60 * 24));
      const hours = Math.floor((useTime % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      const minutes = Math.floor((useTime % (1000 * 60 * 60)) / (1000 * 60));
      if (days > 0) {
        return `${days}${hours} 小时 ${minutes} 分钟`;
      }
      if (hours > 0) {
        return `${hours} 小时 ${minutes} 分钟`;
      }
      return `${minutes} 分钟`;
}
//console.info(timeConversion(556565456))
//6 天 10 小时 36 分钟

7.计算日期的前后n个月份日期

/**
  * @param date 日期 yyyy-MM-dd
  * @param n 计算月份 正数为往后日期 负数为之前日期
  */
function dateMonAgo(date,n){
	let new_date = new Date(date);
    let lastDate = new Date(new_date.setMonth(new_date.getMonth() + n));
    return lastDate.format('yyyy-MM-dd');  
}
//console.info(dateMonAgo('2022-07-25',-3))
//2022-04-25
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值