﻿function getBit(m,n) {return (m>>n)&1}
function lunar(d) { var nums="一二三四五六七八九十"; var mons="正二三四五六七八九十冬腊"; var Cal=[0x41A95,0xD4A,0xDA5,0x20B55,0x56A,0x7155B,0x25D,0x92D,0x5192B,0xA95,0xB4A,0x416AA,0xAD5,0x90AB5,0x4BA,0xA5B,0x60A57,0x52B,0xA93,0x40E95]; var madd=[0,31,59,90,120,151,181,212,243,273,304,334]; var total,m,n,k;var isEnd=false;var t=d.getYear(); if (t<1900) t+=1900;total=(t-2001)*365+Math.floor((t-2001)/4)+madd[d.getMonth()]+d.getDate()-23; if(d.getYear()%4==0&&d.getMonth()>1) total++; for(m=0;;m++) { k=(Cal[m]<0xfff)?11:12; for(n=k;n>=0;n--) { if(total<=29+getBit(Cal[m],n)) { isEnd=true;break;} total=total-29-getBit(Cal[m],n); } if(isEnd) break; } var cYear=2001+m; var cMonth=k-n+1; var cDay=total; if(k==12){ if(cMonth==Math.floor(Cal[m]/0x10000)+1) cMonth=1-cMonth; if(cMonth>Math.floor(Cal[m]/0x10000)+1) cMonth--; } var cHour=Math.floor((d.getHours()+3)/2); var t=""; if(cMonth<1) { t+="闰"; t+=mons.charAt(-cMonth-1); } else {t+=mons.charAt(cMonth-1);} t+="月";t+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"卅")); if(cDay%10!=0||cDay==10)t+=nums.charAt((cDay-1)%10);return t; } function today() { var d=new Date(); var ymd=d.getFullYear()+"年"+(d.getMonth()+1)+"月"+d.getDate()+"日", week=['日', '一', '二', '三', '四', '五', '六']; return ymd+" 星期"+week[d.getDay()]+"<br> 农历"+lunar(d); } function parseDate(str) { if(typeof str == 'string') { if(str.indexOf('GMT') > 0 || str.indexOf(',') > 0) { return new Date(str); } if(str.indexOf('-') == -1) { str = str.replace(/[\u4e00-\u9fa5]/g ,"-"); var s = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2})- +(\d{1,2}):(\d{1,2}) *$/); if(s && s.length>5) return new Date(parseInt(s[1]),parseInt(s[2]) -1,parseInt(s[3]),parseInt(s[4]),parseInt(s[5])); } var seg = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/); if(seg && seg.length>3) return new Date(parseInt(seg[1]),parseInt(seg[2]) -1,parseInt(seg[3])); seg = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}) *$/); if(seg && seg.length>5) return new Date(parseInt(seg[1]),parseInt(seg[2]) -1,parseInt(seg[3]),parseInt(seg[4]),parseInt(seg[5])); seg = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/); if(seg && seg.length>6) return new Date(parseInt(seg[1]),parseInt(seg[2]) -1,parseInt(seg[3]),parseInt(seg[4]),parseInt(seg[5]),parseInt(seg[6])); seg = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/); if(seg && seg.length>7) return new Date(parseInt(seg[1]),parseInt(seg[2]) -1,parseInt(seg[3]),parseInt(seg[4]),parseInt(seg[5]),parseInt(seg[6]),parseInt(seg[7])); } return null; } function dateStr(pubdate) { var date = parseDate(pubdate); if(date) { function hhmm(date) { var s = ''; var h = date.getHours(); var m = date.getMinutes(); if(h < 10) s += '0'; s += h; s += ':'; if(m < 10) s += '0'; s += m; return s; } var now = new Date(); var minute =(now.getTime()-date.getTime())/(60*1000); var hour = parseInt(minute/60); if(hour > 24) { var day = parseInt(hour/24); if(day == 1) { pubdate = Local.yestoday+hhmm(date); } else if(day == 2) { pubdate = Local.beforday; } else { var year = day/365; if(year > 1) { pubdate = parseInt(year)+Local.yearsold; } else { pubdate = day+Local.daybefor; } } } else if(hour > 0) { pubdate = hour+Local.hourbefor; } else { pubdate = parseInt(minute)+Local.minutebefor; } } return pubdate; } 
