【js】常用的日期操作

博客介绍了 JavaScript 中日期的相关操作,包括基本日期操作、根据出生日期获取周岁、活动截止倒计时、input date 赋值及设置最值,还有指定日期前后推移 n 天获取新日期等内容,为日期处理提供实用方法。

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

目录

1、基本日期操作

2、根据出生日期获取周岁

3、距离活动截止还差几小时几分几秒(倒计时)

         4、input   type="date"   赋值以及设置最大值和最小值

         5、指定一个日期,向前或向后 n天,得到新的日期



1、基本日期操作

var myDate = new Date();     //ios手机 new Date(‘2018-1-1’)会报错,需要变成2018-01-01

myDate.getYear(); //获取当前年份(从1900年开始算起)
myDate.getFullYear(); //获取完整的年份(4位,1970)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间

 

2、根据出生日期获取周岁

//2010-01-01
function getAge(strBirthday)
        {
            var returnAge;
            var strBirthdayArr=new Date(strBirthday);
            var birthYear = strBirthdayArr.getFullYear();

            var birthMonth = strBirthdayArr.getMonth() + 1;
            var birthDay = strBirthdayArr.getDate();

            var d = new Date();
            var nowYear = d.getFullYear();
            var nowMonth = d.getMonth() + 1;
            var nowDay = d.getDate();

            if(nowYear == birthYear)
            {
                returnAge = 0;//同年 则为0岁
            }
            else
            {
                var ageDiff = nowYear - birthYear ; //年之差
                if(ageDiff > 0)
                {
                    if(nowMonth == birthMonth)
                    {
                        var dayDiff = nowDay - birthDay;//日之差
                        if(dayDiff < 0)
                        {
                            returnAge = ageDiff - 1;
                        }
                        else
                        {
                            returnAge = ageDiff ;
                        }
                    }
                    else
                    {
                        var monthDiff = nowMonth - birthMonth;//月之差
                        if(monthDiff < 0)
                        {
                            returnAge = ageDiff - 1;
                        }
                        else
                        {
                            returnAge = ageDiff ;
                        }
                    }
                }
                else
                {
                    returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
                }
            }

            return returnAge;//返回周岁年龄

        }

 

3、距离活动截止还差几小时几分几秒(倒计时)

//2029-03-03
var endTime = function (startTime) {

    setInterval(
        function(){

            var str = '';
            var date1 = new Date(startTime);  //开始时间
            var date2 = new Date();     //结束时间

            var date3 = date1.getTime() - date2.getTime();   //时间差的毫秒数
            if (date3>0){
                // //计算相差的年数
                // var years = Math.floor(date3 / (12 * 30 * 24 * 3600 * 1000));
                // //计算相差的月数
                var leave = date3 % (12 * 30 * 24 * 3600 * 1000);
                // var months = Math.floor(leave / (30 * 24 * 3600 * 1000));
                // //计算出相差天数
                var leave0 = leave % (30 * 24 * 3600 * 1000);
                var days = Math.floor(date3 / (24 * 3600 * 1000));
                //计算出小时数
                var leave1 = leave0 % (24 * 3600 * 1000);     //计算天数后剩余的毫秒数
                var hours = Math.floor(leave1 / (3600 * 1000));
                //计算相差分钟数
                var leave2 = leave1 % (3600 * 1000);         //计算小时数后剩余的毫秒数
                var minutes = Math.floor(leave2 / (60 * 1000));
                //计算相差秒数
                var leave3 = leave2 % (60 * 1000);       //计算分钟数后剩余的毫秒数
                var seconds = Math.round(leave3 / 1000);
                if (days > 0){
                    str += '<span>'+ days +'</span>天';
                }
                if (hours > 0){
                    str += '<span>'+ hours +'</span>小时';
                }
                str += '<span>'+ minutes +'</span>分钟<span>'+ seconds +'</span>秒';
            }else {
                str = '已过期'
            }

            console.log(str)
        },1000
    );


};




4、input   type="date"   赋值以及设置最大值和最小值

/* type="date" 设置value,min,max的时候,日期格式一定要是1990-01-01这种格式,补零和- */
<input type="date" id="birthday" min="1970-01-01" max="1990-01-01" value="">

/* 动态设置最大日期为今天 */
 function setMaxDate() {
            var date_now = new Date();
            var year = date_now.getFullYear();
            //得到当前月份
            //注:
            //  1:js中获取Date中的month时,会比当前月份少一个月,所以这里需要先加一
            //  2: 判断当前月份是否小于10,如果小于,那么就在月份的前面加一个 '0' , 如果大于,就显示当前月份
            var month = date_now.getMonth()+1 < 10 ? "0"+(date_now.getMonth()+1) : (date_now.getMonth()+1);
            //得到当前日子(多少号)
            var date = date_now.getDate() < 10 ? "0"+date_now.getDate() : date_now.getDate();
            //设置input标签的max属性
            $("#birthday").attr("max",year+"-"+month+"-"+date);
}

/* 动态给value赋值 */
/*2017-2-13*/
 function setValue(time)
        {
            var time1=time.replace(new RegExp(/-/gm) ,"/");
      
            /*new Date的时候发现时间值显示为Invalid Date;原因是浏览器不兼容,需要将'-'转换为'/'就可以了 */
            var date_now = new Date(time1);

            var year = date_now.getFullYear();

            var month = date_now.getMonth()+1 < 10 ? "0"+(date_now.getMonth()+1) : (date_now.getMonth()+1);
            var date = date_now.getDate() < 10 ? "0"+date_now.getDate() : date_now.getDate();

            $("#birthday").val(year+"-"+month+"-"+date);
        }

5、指定一个日期,向前或向后 n天,得到新的日期

//2017-10-2,100
function getBeforeDate(date,n){

  var datt = date.split('-');
  var newDate = new Date(datt[0], datt[1] - 1, datt[2]);
  //计算前几天用减,计算后几天用加,n为向前或者向后天数
  var befminuts = newDate.getTime() - 1000 * 60 * 60 * 24 * parseInt(n);
  var beforeDat = new Date;
  beforeDat.setTime(befminuts);
  var befMonth = beforeDat.getMonth() + 1;
  var mon = befMonth >= 10 ? befMonth : '0' + befMonth;
  var befDate = beforeDat.getDate();
  var da = befDate >= 10 ? befDate : '0' + befDate;
  var newDate = beforeDat.getFullYear() + '-' + mon + '-' + da;

  return newDate
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值