moment.js获取当天,本周,当月,当季,近n天开始结束时间

本文介绍如何利用moment.js库高效地获取当天、本周、当月、当季及近n天的开始和结束时间,适合前端开发人员进行日期处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html>
<html>
<head>
    <title>测试时间控件</title>
    <meta charset="utf-8">
</head>

<body>
	<textarea id="time-test" style="margin: 0px; width: 770px; height: 150px;"></textarea>

    <script type="text/javascript" src="https://libs.cdnjs.net/jquery/1.10.0/jquery.min.js"></script>
    <script type="text/javascript" src="http://cdn.staticfile.org/moment.js/2.24.0/moment-with-locales.js"></script>
	
	<script type="text/javascript">
	
	var timeTestResult = '';
	
	var today = getTimeSpan("today", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("today", "YYYY.MM.DD HH:mm:ss")		==>start='+today[0]+'   end='+today[1]+'\n';
	
	var week = getTimeSpan("week", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("week", "YYYY.MM.DD HH:mm:ss")		==>start='+week[0]+'   end='+week[1]+'\n';
	
	var month = getTimeSpan("month", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("month", "YYYY.MM.DD HH:mm:ss")		==>start='+month[0]+'   end='+month[1]+'\n';
	
	var year = getTimeSpan("year", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("year", "YYYY.MM.DD HH:mm:ss")		==>start='+year[0]+'   end='+year[1]+'\n';
	
	var season = getTimeSpan("season", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("season", "YYYY.MM.DD HH:mm:ss")		==>start='+season[0]+'   end='+season[1]+'\n';
	
	var d10 = getTimeSpan("10d", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("10d", "YYYY.MM.DD HH:mm:ss")		==>start='+d10[0]+'   end='+d10[1]+'\n';
	
	var m5 = getTimeSpan("5m", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("5m", "YYYY.MM.DD HH:mm:ss")		==>start='+m5[0]+'   end='+m5[1]+'\n';
	
	var y3 = getTimeSpan("3y", "YYYY.MM.DD HH:mm:ss");
	timeTestResult += 'getTimeSpan("3y", "YYYY.MM.DD HH:mm:ss")		==>start='+y3[0]+'   end='+y3[1]+'\n';
	
	$('#time-test').val(timeTestResult);
	
	function getTimeSpan(timeType, format){
        if(format == null || format == ""){
            format = 'YYYY.MM.DD HH:mm:ss';
        }
        var timeSpan = [];
        if("today" == timeType){//当天
            timeSpan[0] = moment(new Date()).startOf('day').format(format);
            timeSpan[1] = moment(new Date()).format(format);
            // timeSpan[1] = moment(new Date()).endOf('day').format(format);
        }else if("week" == timeType){//本周
            timeSpan[0] = moment(new Date()).startOf('isoweek').format(format);
            timeSpan[1] = moment(new Date()).format(format);
        }else if("month" == timeType){//本月
            timeSpan[0] = moment(new Date()).startOf('month').format(format);
            timeSpan[1] = moment(new Date()).format(format);
        }else if("year" == timeType){//本年
            timeSpan[0] = moment(new Date()).startOf('year').format(format);
            timeSpan[1] = moment(new Date()).format(format);
        }else if("season" == timeType){//本季
            timeSpan[0] = moment(new Date()).startOf('quarter').format(format);
            timeSpan[1] = moment(new Date()).format(format);
        }else{//近N天、近N月、近N年
            var regex = /(\d+)([ymdYMD])/g;
            var found = regex.exec(timeType);
            var num = found[1];
            var unit = found[2];
            if("y" == unit || "Y" == unit){
                timeSpan[1] = moment(new Date()).format(format);
                timeSpan[0] = moment(new Date()).add(1-num, "years").startOf('day').format(format);
            }else if("m" == unit || "M" == unit){
                timeSpan[1] = moment(new Date()).format(format);
                timeSpan[0] = moment(new Date()).add(1-num, "months").startOf('day').format(format);
            }else if("d" == unit || "D" == unit){
                timeSpan[1] = moment(new Date()).format(format);
                timeSpan[0] = moment(new Date()).add(1-num, "days").startOf('day').format(format);
            }
        }
        return timeSpan;
    }
	</script>
</body>

</html>

运行结果

getTimeSpan("today", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.14 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("week", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.11 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("month", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.01 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("year", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.01 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("season", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.01 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("10d", "YYYY.MM.DD HH:mm:ss")		==>start=2021.01.05 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("5m", "YYYY.MM.DD HH:mm:ss")		==>start=2020.09.14 00:00:00   end=2021.01.14 17:49:09
getTimeSpan("3y", "YYYY.MM.DD HH:mm:ss")		==>start=2019.01.14 00:00:00   end=2021.01.14 17:49:09

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值