/**
* Lunar.js
* modified by feifei.im 新增农历及节气等功能,来自hao123
*/
(function(){
var DB = {
digitCN: ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'],
heavenlyStems: ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'],
earthlyBranches: ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'],
chineseZodiac: ['鼠', '牛', '虎', '兔', '龙', '蛇', '马', '羊', '猴', '鸡', '狗', '猪'],
term: ['冬至', '小寒', '大寒', '立春', '雨水', '惊蛰', '春分', '清明', '谷雨', '立夏', '小满', '芒种', '夏至', '小暑', '大暑', '立秋', '处暑', '白露', '秋分', '寒露', '霜降', '立冬', '小雪', '大雪'],
monthCn: ['十一', '十二', '正', '二', '三', '四', '五', '六', '七', '八', '九', '十'],
dateCn: ['初一', '初二', '初三', '初四', '初五', '初六', '初七', '初八', '初九', '初十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九', '二十', '廿一', '廿二', '廿三', '廿四', '廿五', '廿六', '廿七', '廿八', '廿九', '三十', '卅一']
};
function lunar(oDate){
var d = new Date(oDate);
if (+d < -10233222336000) {
return null;
}
return new Lunar(d);
}
function Lunar(oDate){
this.oDate = oDate;
this.julianDay = JulianDay.fromDate(this.oDate);
this.cnDay = this.oDate.getDay() ? DB.digitCN[this.oDate.getDay()] : '日';
var mjd = this.julianDay - JulianDay.JD2000;
var arTerm = Term.getTerms(mjd);
var arNewMoon = NewMoon.getNewMoons(arTerm);
for (var days = Math.round(mjd - arNewMoon[0].JD), i = 0, o; i < arNewMoon.length; i++) {
o = arNewMoon[i];
if (days < o.days) {
this.isBigMonth = o.days == 30;
this.isLeap = o.isLeap;
this.lMonth = o.name;
this.lNextMonth = o.nextName;
this.lDate = DB.dateCn[days];
this.dateIndex = days;
break;
} else {
days -= o.days;
}
}
mjd = Math.round(mjd);
this.lYear = Math.floor((arTerm[3].JD + (mjd < arTerm[3].JD ? -365 : 0) + 365.25 * 16 - 35) / 365.2422 + 0.5);
var t = arNewMoon[arNewMoon.zyIndex].JD;
t -= mjd < t ? 365 : 0;
t += 5810;
this.sYear = Math.floor(t / 365.2422 + 0.5);
this.hYear = this.sYear + 1984 + 2698;
var t = arTerm.hash[mjd];
this.term = t ? t.name : '';
var t = this.lYear + 6000;
this.animal = DB.chineseZodiac[t % 12];
this.gzYear = DB.heavenlyStems[t % 10] + DB.earthlyBranches[t % 12];
var t = Math.floor((mjd - arTerm[0].JD) / 30.43685);
t < 12 && mjd >= arTerm[2 * t + 1].JD && t++;
t += Math.floor((arTerm[12].JD + 390) / 365.2422) * 12 + 900000;
this.gzMonth = DB.heavenlyStems[t % 10] + DB.earthlyBranches[t % 12];
var t = mjd - 6 + 9000000;
this.gzDate = DB.heavenlyStems[t % 10] + DB.earthlyBranches[t % 12];
this.gzChrono = DB.earthlyBranches[Math.floor((this.oDate.getHours() + 1) / 2)] || '子';
}
var NewMoon = {
correction: unzip('EqoFscDcrFpmEsF1DfFideFelFpFfFfFiaipqti3ksttikptikqckstekqttgkqttgkqteksttikptikq1fjstgjqttjkqttgkqtekstfkptikq1tijstgjiFkirFsAeACoFsiDaDiADc3AFbBfgdfikijFifegF3FhaikgFag3E1btaieeibggiffdeigFfqDfaiBkF3kEaikhkigeidhhdiegcFfakF3ggkidbiaedksaFffckekidhhdhdikcikiakicjF3deedFhFccgicdekgiFbiaikcfi3kbFibefgEgFdcFkFeFkdcfkF3kfkcickEiFkDacFiEfbiaejcFfffkhkdgkaiei3ehigikhdFikfckF3dhhdikcfgjikhfjicjicgiehdikcikggcifgiejF3jkieFhegikggcikFegiegkfjebhigikggcikdgkaFkijcfkcikfkcifikiggkaeeigefkcdfcfkhkdgkegieidhijcFfakhfgeidieidiegikhfkfckfcjbdehdikggikgkfkicjicjF3dbidikFiggcifgiejkiegkigcdiegfggcikdbgfgefjF3kfegikggcikdgFkeeijcfkcikfkekcikdgkabhkFikaffcfkhkdgkegbiaekfkiakicjhfgqdq1fkiakgkfkhfkfcjiekgFebicggbedF3jikejbbbiakgbgkacgiejkijjgigfiakggfggcibFifjefjF3kfekdgjcibFeFkijcfkfhkfkeaieigekgbhkfikidfcjeaibgekgdkiffiffkiakF3jhbakgdki3dj3ikfkicjicjieeFkgdkicggkighdF3jfgkgfgbdkicggfggkidFkiekgijkeigfiskiggfaidheigF3jekijcikickiggkidhhdbgcfkFikikhkigeidieFikggikhkffaffijhidhhakgdkhkijF3kiakF3kfheakgdkifiggkigicjiejkieedikgdfcggkigieeiejfgkgkigbgikicggkiaideeijkefjeijikhkiggkiaidheigcikaikffikijgkiahi3hhdikgjfifaakekighie3hiaikggikhkffakicjhiahaikggikhkijF3kfejfeFhidikggiffiggkigicjiekgieeigikggiffiggkidheigkgfjkeigiegikifiggkidhedeijcfkFikikhkiggkidhh3ehigcikaffkhkiggkidhh3hhigikekfiFkFikcidhh3hitcikggikhkfkicjicghiediaikggikhkijbjfejfeFhaikggifikiggkigiejkikgkgieeigikggiffiggkigieeigekijcijikggifikiggkideedeijkefkfckikhkiggkidhh3ehijcikaffkhkiggkidhh3hhigikhkikFikfckcidhh3hiaikgjikhfjicjicgiehdikcikggifikigiejfejkieFhegikggifikiggfghigkfjeijkhigikggifikiggkigieeijcijcikfksikifikiggkidehdeijcfdckikhkiggkhghh3ehijikifffffkhsFngErD3pAfBoDd3BlEtFqA1AqoEpDqElAEsEeB1BmADlDkqBtC3FnEpDqnEmFsFsAFnllBbFmDsDiCtDmAB1BmtCgpEplCpAEiBiEoFqFtEqsDcCnFtADnFlEgdkEgmEtEsCtDmADqFtAFrAtEcCqAE3BoFqC3F3DrFtBmFtAC1ACnFaoCgADcADcCcFfoFtDlAFgmFqBq1bpEoAEmkqnEeCtAE3bAEqgDfFfCrgEcBrACfAAABqAAB3AAClEnFeCtCgAADqDoBmtAAACbFiAAADsEtBqAB1FsDqpFqEmFsCeDtFlCeDtoEpClEqAAFrAFoCgFmFsFqEnAEcCqFeCtFtEnAEeFtAAEkFnErAABbFkADnAAeCtFeAfBoAEpFtAABtFqAApDcCGJ'),
calcForLow: function(W){
var v = 7771.37714500204, t = (W + 1.08472) / v, L;
t -= (-0.0000331 * t * t + 0.10976 * Math.cos(0.785 + 8328.6914 * t) + 0.02224 * Math.cos(0.187 + 7214.0629 * t) - 0.03342 * Math.cos(4.669 + 628.3076 * t)) / v + (32 * (t + 1.8) * (t + 1.8) - 20) / 86400 / 36525;
return t * 36525 + 8 / 24;
},
calcForHigh: function(W){
var t = XL.MS_aLon_t2(W) * 36525;
t = t - dt_T(t) + 8 / 24;
var v = ((t + 0.5) % 1) * 86400;
if (v < 1800 || v > 86400 - 1800) t = XL.MS_aLon_t(W) * 36525 - dt_T(t) + 8 / 24;
return t;
},
cache: {},
getNewMoons: function(terms){
var jd = terms[0].JD, firstDay = NewMoon.calc(jd), ar = [];
if (firstDay > jd) {
firstDay -= 29.53;
}
if (NewMoon.cache[firstDay]) {
ar = NewMoon.cache[firstDay];
} else {
for (var i = 0; i < 15; i++) {
ar.push({
JD: NewMoon.calc(firstDay + 29.5306 * i),
index: i
});
if (i) {
ar[i - 1].days = ar[i].JD - ar[i - 1].JD;
}
}
if (ar[13].JD <= terms[24].JD) {
for (i = 1; ar[i + 1].JD > terms[2 * i].JD && i < 13; i++) {
}
ar[i].isLeap = true;
for (; i < 14; i++) {
ar[i].index--;
}
}
for (i = 0; i < 14; i++) {
ar[i].name = (ar[i].isLeap ? '闰' : '') + DB.monthCn[ar[i].index % 12];
ar[i].nextName = (ar[i+1].isLeap ? '闰' : '') + DB.monthCn[ar[i+1].index % 12];
if (ar[i].index == 2) {
ar.zyIndex = i;
}
}
NewMoon.cache[firstDay] = ar;
}
return ar;
},
calc: function(jd){
jd += JulianDay.JD2000;
var D, n, pc = 14, JDstart = 1947168.00, JD1960 = 2436935;
if (jd >= JD1960) {
return Math.floor(this.calcForHigh(Math.floor((jd + pc - 2451551) / 29.5306) * Math.PI * 2) + 0.5);
}
if (jd >= JDstart && jd < JD1960) {
D = Math.floor(this.calcForLow(Math.floor((jd + pc - 2451551) / 29.5306) * Math.PI * 2) + 0.5);
n = this.correction.substr(Math.floor((jd - JDstart) / 29.5306), 1) - 0;
return D + (n ? n - 2 : n);
}
}
};
var Term = {
correction: unzip('FrcFs11AFsckF1tsDtFqEtF3posFdFgiFseFtmelpsEfhkF1anmelpFlF3ikrotcnEqEq1FfqmcDsrFor11FgFrcgDscFs11FgEeFtE1sfFs11sCoEsaF1tsD3FpeE1eFsssEciFsFnmelpFcFhkF1tcnEqEpFgkrotcnEqrEtFermcDsrE111FgBmcmr11DaEfnaF111sD3FpeForeF1tssEfiFpEoeFssD3iFstEqFppDgFstcnEqEpFg33FscnEqrAoAF1ClAEsDmDtCtBaDlAFbAEpAAAAAD1FgBiBqoBbnBaBoAAAAAAAEgDqAdBqAFrBaBoACdAAf3AACgAAAeBbCamDgEifAE1AABa3C3BgFdiAAACoCeE3ADiEifDaAEqAAFe3AcFbcAAAAAF3iFaAAACpACmFmAAAAAAAACrDaAAADG0'),
calcForLow: function(W){
var t, L, v = 628.3319653318;
t = (W - 4.895062166) / v;
t -= (53 * t * t + 334116 * Math.cos(4.67 + 628.307585 * t) + 2061 * Math.cos(2.678 + 628.3076 * t) * t) / v / 10000000;
L = 48950621.66 + 6283319653.318 * t + 53 * t * t + 334166 * Math.cos(4.669257 + 628.307585 * t) + 3489 * Math.cos(4.6261 + 1256.61517 * t) + 2060.6 * Math.cos(2.67823 + 628.307585 * t) * t - 994 - 834 * Math.sin(2.1824 - 33.75705 * t);
t -= (L / 10000000 - W) / 628.332 + (3
fullcalendar改造后插件
4星 · 超过85%的资源 需积分: 9 97 浏览量
2017-03-31
16:34:41
上传
评论
收藏 70KB ZIP 举报
泡泡菜叶
- 粉丝: 9
- 资源: 4
最新资源
- 基于Vue和TypeScript的房地产管理系统前端设计源码
- 基于微信小程序的通用订票系统设计源码
- 基于ThinkPHP的轻量级PHP开发框架设计源码
- 基于CSS的响应式鲜花网站全屏效果设计源码
- 基于JavaScript的访客预约系统设计源码
- 基于Vue和ECharts的工作租房数据可视化系统设计源码
- 1040g0cg310ravpiu6ibg5pg00tsipsln3ju2d0g 2
- 基于Python的SAR图像去噪CNN-NLM设计源码
- redhat6升级到redhat7,过程redhat6.x-> redhat6.10->rehat7.9 主版本最高版本
- 基于Django的流程引擎设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈