js通过年月日(生日或者日期)获取年龄和生肖和星座的示例代码

分类:Javascript| 发布:佚名| 查看:1551 | 发表时间:2014/9/12
01//根据日期(生日)获取真实年龄
02function parseDate(str){
03      if(str.match(/^\d{4}[\-\/\s+]\d{1,2}[\-\/\s+]\d{1,2}$/)){
04          return new Date(str.replace(/[\-\/\s+]/i,'/'))
05      }else if(str.match(/^\d{8}$/)){
06          return new Date(str.substring(0,4)+'/'+str.substring(4,6)+'/'+str.substring(6))
07      }else{
08          alert('date parse error')
09      }
10}
11 
12function getAge(){
13      var age;
14      var aDate=new Date();
15      var thisYear=aDate.getFullYear();
16      var thisMonth=aDate.getMonth()+1;
17      var thisDay=aDate.getDate();
18      var brith=parseDate(document.getElementById("date1").value);
19      brithy=brith.getFullYear();
20      brithm=brith.getMonth()+1;
21      brithd=brith.getDate();
22      if(thisYear-brithy<0) {
23          alert("输入错误!");
24          age="";
25     }else{
26         if(thisMonth-brithm<0){
27            age = thisYear-brithy-1;
28         }else{
29             if(thisDay-brithd>=0) {
30                 //alert(thisDay+'-'+brithd+"_ddd");
31                 age = thisYear-brithy;
32             }else{
33                 age = thisYear-brithy-1;
34             }
35        }
36   }
37   document.getElementById("date2").value=age;
38}

HTML代码

1<from name="theform">
2生日:<input name="date1" id="date1" onblur="getAge()">
3年龄:<input name="date2" id="date2">
4</form>

-----------------------------------------------华丽的分割线-------

01//取生肖, 参数必须是四位的年
02function getshengxiao(yyyy){
03      var arr=['猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊'];
04      return /^\d{4}$/.test(yyyy)?arr[yyyy%12]:null
05}
06  
07// 根据生日的月份和日期,计算星座。
08function getAstro(month,day){
09      var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
10      var arr=[20,19,21,21,21,22,23,23,23,23,22,22];
11      return s.substr(month*2-(day<arr[month-1]?2:0),2);
12}

结合AngularJs模板使用例子:

1<tr ng-repeat="fans in vm.data.users">
2 <td ng-bind="$index+1"></td>
3 <td ng-bind="fans.nickname">郑州网建</td>
4 <td ng-bind="fans.gender=='m'?'男':'女'"></td>
5 <td ng-bind="vm.getDate(fans.birthday)"></td>
6 <td ng-bind="vm.getAstro(fans.birthday)+'座'"></td>
7 <td ng-bind="vm.unix_to_datetime(1399259663*1000)"></td>
8</tr>

PS:unix时间戳转换成日期时间:(关于上边时间戳1399259663为什么*1000,是因为根据不同的时区的问题,见下边的相关教程链接。)此转换后的结果是:2014/5/5 11:14:23

01//Unix时间戳转换为时间格式
02 unix_to_datetime: function (datetime) {
03        if(window.VBArray){
04            datetime = datetime.replace(' +0800', '');
05        }
06        var now = new Date(datetime);
07        var year = now.getFullYear(),
08              month = now.getMonth()+1,
09              day = now.getDate(),
10              hour = now.getHours(),
11              minut = now.getMinutes(),
12              secon = now.getSeconds();
13        if(hour<10){
14            hour="0"+hour;
15        }
16        if(minut<10){
17           minut="0"+minut;
18        }
19        if(secon<10){
20           secon="0"+secon;
21        }
22        if(year != NaN){
23           return year+"/"+month+"/"+day+" "+hour+":"+minut+":"+secon;
24        }else{
25          return ""
26      }
27 }

相关教程: UTC和CST和GMT时间的区别

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/javascript/1643.html