根据时间戳计算宝宝年龄(年月日)

//每个月按30天计算所以误差有些大
// 根据时间戳计算宝宝年龄
                getBabyAge:function(time){
                    let birthday = time;
                    let now = new Date().getTime();
                    let hours = (now-birthday)/3600000;
                    let year = Math.floor(hours / (24 * 30 * 12));
                    hours = hours % (24 * 30 * 12);
                    let months = Math.floor(hours / (24 * 30 ));
                    hours = hours % (24 * 30 );
                    let days = Math.floor(hours / (24));
                    let age = year + '岁' + months + '个月' + days +'天';
                    // console.log('已经出生:'+ age);
                    return age;
                },

 

//误差能小些在1天左右
// 根据时间戳计算宝宝年龄
                getBabyAge: function (time) {
                    let now = new Date().getTime();
                    let time2 = now - time;
                    let date = new Date(time2);
                    let year = date.getFullYear() - 1970;
                    let months = date.getMonth();
                    let days = date.getDate()-1;
                    let age = year + '岁' + months + '个月' + days + '天';
                    // console.log('已经出生:'+ age);
                    return age;
                },

将当前日期的时间戳减去出生日期的时间戳再转化为日期格式。减去1970年1月1日日期为出生年月日。

 

 //基本没有误差        
                getBabyAge2(time) {
                    let nowTime = new Date();
                    let birthTime = new Date(time);
                    // console.log("time",nowTime,birthTime);
                    // 当前年月日
                    let curYear = nowTime.getFullYear();
                    let curMonth = nowTime.getMonth();
                    let curDay = nowTime.getDate();
                    // 出生年月日
                    let birYear = birthTime.getFullYear();
                    let birMonth = birthTime.getMonth();
                    let birDay = birthTime.getDate();
                    // 年月日之差
                    let year = curYear - birYear;
                    let months = curMonth - birMonth;
                    let day = curDay - birDay;
                    // console.log("test",year,months,day);
                    //(1)将出生日期的时间戳都转化为Date,分别获取当前时间和出生时间的年、月、日之差
                    //(2)若月份相差为负说明不满这一年,年份减1,月份借了一年变为12+当前月份。故月份之差变为12+当前月份-出生月份。
                    // 若月份相差为0并且天相差为负,说明也不满一年,计算同理。
                    //(3)若天相差为负,说明不满这个月,月份减1,天数借了一个月,故天数之差为上个月的天数+当前天-出生天
                    if (months < 0 || months == 0 && day < 0) {
                        year -= 1;
                        months = 12 + curMonth - birMonth;
                    }
                    if (day < 0) {
                        months -= 1;
                        let date = this.getDaysInMonth(curYear, curMonth);
                        // console.log("date",date);
                        day = date + curDay - birDay;
                    }
                    age = year + '岁' + months + '个月' + day + '天';
                    // console.log("age",age);
                    return age;
                },
                // 获取某年某月有多少天
                getDaysInMonth(year,month){
                    month = parseInt(month,10);
                    var temp = new Date(year,month,'0');
                    return temp.getDate();
                },

(1)将出生日期的时间戳都转化为Date,分别获取当前时间和出生时间的年、月、日之差

(2)若月份相差为负说明不满这一年,年份减1,月份借了一年变为12+当前月份。故月份之差变为12+当前月份-出生月份。

        若月份相差为0并且天相差为负,说明也不满一年,计算同理。

(3)若天相差为负,说明不满这个月,月份减1,天数借了一个月,故天数之差为上个月的天数+当前天-出生天

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值