关于日期时间项目中遇到的情况总结

js获取两个时间段内的所有日期列表

function getDiffDate(start, end) {

    var startTime = getDate(start);

    var endTime = getDate(end);

    var dateArr = [];

    while ((endTime.getTime() - startTime.getTime()) > 0) {

        var year = startTime.getFullYear();

        var month = startTime.getMonth().toString().length === 1 ? "0" + (parseInt(startTime.getMonth().toString(),10) + 1) : (startTime.getMonth() + 1);

        var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate();

        dateArr.push(year + "-" + month + "-" + day);

        startTime.setDate(startTime.getDate() + 1);

    }

    return dateArr;

}

 

function getDate (datestr) {

    var temp = datestr.split("-");

    if (temp[1] === '01') {

        temp[0] = parseInt(temp[0],10) - 1;

        temp[1] = '12';

    } else {

        temp[1] = parseInt(temp[1],10) - 1;

    }

    //new Date()的月份入参实际都是当前值-1

    var date = new Date(temp[0], temp[1], temp[2]);

    return date;

}

console.info(getDiffDate('2018-05-27', '2018-06-31'));

js写完后发现只获取日期无法满足需求

/**
 * 获取日期段所有的日期字符串
 * var weak = getAllWeak(begintime,endtime)+"," 加“,”  //调用方法将动态的开始时间,结束时间放    
 * 入参数中
 * weak.split(",")[i]  //将获取的字符串截取
 * @param start_time
 * @param end_time
 * @returns  返回所有日期的字符串
 */
function getAllWeak(start_time,end_time){
	var begin = new Date(start_time), end = new Date(end_time);
	var begin_time = begin.getTime(), end_time = end.getTime(), time_diff = end_time - begin_time;
	var all_d = [];
	for (var i = 0; i <= time_diff; i += 86400000){
        var ds = new Date(begin_time + i);
        all_d.push(ds.getFullYear()+"-"+(ds.getMonth()+1)+"-"+ds.getDate());
	}
	return all_d;
}


/**
 * 获取日期对对应的星期几
 * getWeakDays(weak.split(",")[i]) //将拆分的日期获取周几
 * @param days
 * @returns
 */
function getWeakDays(days){
	var weekDay = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];  
	var myDate = new Date(Date.parse(days));  
	return weekDay[myDate.getDay()];
}

/**
 * weakStr[i]为周几显示
 * @returns
 */
function getWeakInfo(begintime,endtime){
	var weak = getAllWeak(begintime,endtime)+",";
	var weakStr = weak.split(",");
	for(var i = 0; i< weakStr.length-1; i++){
	$("	<div class='d-0'>"+
		"	<div class='d-1'>"+
		"		<div class='d-1-4'>"+
				weakStr[i]+
		"		</div>"+
		"		<div class='d-1-3' onclick=jumpPageSch(this) time='"+weakStr[i]+"'>"+
					getWeakDays(weakStr[i])+
		"		</div>"+
		"	</div>"+
		"	<div class='d-2'>"+
		"	</div>"+
		"	<div class='d-3'>"+
		"	</div>"+
		"</div>").appendTo($(".m-main"))
	}
}
getWeakInfo('2021-04-27', '2021-05-12');


即可获取时间与对应日期

将字符串形式的日期转换成日期对象

var strTime="2011-04-16";    //字符串日期格式             
var date= new Date(Date.parse(strTime.replace(/-/g,  "/")));      //转换成Data();  
    new Date() ;     //参数可以为整数; 也可以为字符串; 但格式必须正确 

    new Date(2009,1,1);      //正确 

    new Date("2009/1/1");   //正确  

    new Date("2009-1-1");   //错误  

    new Date( year, month, date, hrs, min, sec)  按给定的参数创建一日期对象 

参数说明:
  year的值为:需设定的年份-1900。例如需设定的年份是1997则year的值应为97,即1997-1900的结果。所以Date中可设定 的年份最小为1900;
  month的值域为0~11,0代表1月,11表代表12月;
  date的值域在1~31之间;
  hrs的值域在0~23之间。从午夜到次日凌晨1点间hrs=0,从中午到下午1点间hrs=12;
  min和sec的值域在0~59之间。
  例 Date day=new Date(11,3,4);
  //day中的时间为:04-Apr-11 12:00:00 AM

   另外,还可以给出不正确的参数。 

 例 设定时间为1910年2月30日,它将被解释成3月2日。 
  Date day=new Date(10,1,30,10,12,34); 
  System.out.println("Day's date is:"+day); 

//打印结果为:Day’s date is:Web Mar 02 10:13:34 GMT+08:00 1910

1.日期格式转为日期标准字符串:2015-03-19

var formatDate = function (date) {  
    var y = date.getFullYear();  
    var m = date.getMonth() + 1;  
    m = m < 10 ? '0' + m : m;  
    var d = date.getDate();  
    d = d < 10 ? ('0' + d) : d;  
    return y + '-' + m + '-' + d;  
};  

2.js方法返回值:2015-03-19 12:00:00

var formatDateTime = function (date) {  
                var y = date.getFullYear();  
                var m = date.getMonth() + 1;  
                m = m < 10 ? ('0' + m) : m;  
                var d = date.getDate();  
                d = d < 10 ? ('0' + d) : d;  
                var h = date.getHours();  
                h=h < 10 ? ('0' + h) : h;  
                var minute = date.getMinutes();  
                minute = minute < 10 ? ('0' + minute) : minute;  
                var second=date.getSeconds();  
                second=second < 10 ? ('0' + second) : second;  
                return y + '-' + m + '-' + d+' '+h+':'+minute+':'+second;  
            };  

调用:formatDate(Date()) formatDate(Date())

3.时间戳转为日期格式
//时间戳转日期格式


  var formatDateTime3 = function(time, format){  
          var t = new Date(time);  
          var tf = function(i){return (i < 10 ? '0' : '') + i};  
          return format.replace(/yyyy|MM|dd|HH|mm|ss/g, function(a){  
              switch(a){  
                  case 'yyyy':  
                      return tf(t.getFullYear());  
                      break;  
                  case 'MM':  
                      return tf(t.getMonth() + 1);  
                      break;  
                  case 'mm':  
                      return tf(t.getMinutes());  
                      break;  
                  case 'dd':  
                      return tf(t.getDate());  
                      break;  
                  case 'HH':  
                      return tf(t.getHours());  
                      break;  
                  case 'ss':  
                      return tf(t.getSeconds());  
                      break;  
              }  
          })  
      };  

4.时间格式字符串转为时间戳(毫秒)

var time1=‘2016-01-01 17:22:37’;  
var date=new Date(time1.replace(/-/g, '/'));  //开始时间  
var time2=date.getTime();  
如何将2015-03-12 12:00 转换成标准时间()?

 

Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)
var parserDate = function (date) {  
    var t = Date.parse(date);  
    if (!isNaN(t)) {  
        return new Date(Date.parse(date.replace(/-/g, "/")));  
    } else {  
        return new Date();  
    }  
};  

js方法返回值:Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间)

5.判断时间间隔不超过24个小时

var date1=new Date("2004/09/16 20:08:00");
var date2=new Date("2004/09/17 20:08:00");
var date3=(date2.getTime()-date1.getTime())/1000;   //相差秒数
 if(date3>60*60*24*1000){  
          alert("开始时间与结束时间间隔大于24小时!");  
          return false; }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值