export default {

/**

* 获取旧历几月几日

* d : date对象

* showYear: 是否显示农历年

*

* getLunarDay() //当天的农历日期

* getLunarDay(new Date("1988-02-06")) //腊月十九

* getLunarDay(new Date("1988-02-06"), true) //丁卯年 腊月十九

*

*/

getLunarDay: function(d, showYear) {

var CalendarData = new Array(100);

var madd = new Array(12);

var tgString = "甲乙丙丁戊己庚辛壬癸";

var dzString = "子丑寅卯辰巳午未申酉戌亥";

var numString = "一二三四五六七八九十";

var monString = "正二三四五六七八九十冬腊";

var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";

var cYear, cMonth, cDay, TheDate;

CalendarData = new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5,

0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D,

0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA,

0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25,

0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B,

0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F,

0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A,

0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93,

0x40E95);

madd[0] = 0;

madd[1] = 31;

madd[2] = 59;

madd[3] = 90;

madd[4] = 120;

madd[5] = 151;

madd[6] = 181;

madd[7] = 212;

madd[8] = 243;

madd[9] = 273;

madd[10] = 304;

madd[11] = 334;

function GetBit(m, n) {

return (m >> n) & 1;

}

function e2c() {

TheDate = (arguments.length != 3) ? new Date() : new Date(arguments[0], arguments[1], arguments[2]);

var total, m, n, k;

var isEnd = false;

var tmp = TheDate.getFullYear();

total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + madd[TheDate.getMonth()] + TheDate.getDate() - 38;

if (TheDate.getYear() % 4 == 0 && TheDate.getMonth() > 1) {

total++;

}

for (m = 0;; m++) {

k = (CalendarData[m] < 0xfff) ? 11 : 12;

for (n = k; n >= 0; n--) {

if (total <= 29 + GetBit(CalendarData[m], n)) {

isEnd = true;

break;

}

total = total - 29 - GetBit(CalendarData[m], n);

}

if (isEnd) break;

}

cYear = 1921 + m;

cMonth = k - n + 1;

cDay = total;

if (k == 12) {

if (cMonth == Math.floor(CalendarData[m] / 0x10000) + 1) {

cMonth = 1 - cMonth;

}

if (cMonth > Math.floor(CalendarData[m] / 0x10000) + 1) {

cMonth--;

}

}

}

function GetcDateString(showYear) {

var tmp = "";

if (showYear) {

tmp += tgString.charAt((cYear - 4) % 10);

tmp += dzString.charAt((cYear - 4) % 12);

tmp += "年 ";

}

if (cMonth < 1) {

tmp += "(闰)";

tmp += monString.charAt(-cMonth - 1);

} else {

tmp += monString.charAt(cMonth - 1);

}

tmp += "月";

tmp += (cDay < 11) ? "初" : ((cDay < 20) ? "十" : ((cDay < 30) ? "廿" : "三十"));

if (cDay % 10 != 0 || cDay == 10) {

tmp += numString.charAt((cDay - 1) % 10);

}

return tmp;

}

function GetLunarDay(solarYear, solarMonth, solarDay) {

if (solarYear < 1921 || solarYear > 2020) {

return "";

} else {

solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;

e2c(solarYear, solarMonth, solarDay);

return GetcDateString(showYear);

}

}

if (!d) {

var d = new Date();

}

return GetLunarDay(d.getFullYear(), d.getMonth() + 1, d.getDate());

},

/**

* 此方法可以获取该日期处于某节气

*

* getjq() //当天处于某节气

* */

getjq: function(yyyy, mm, dd) {

if (!yyyy || !mm || !dd) {

let now = new Date();

yyyy = now.getFullYear(); //年

mm = now.getMonth() + 1; //月

dd = now.getDate(); //日

}

mm = mm - 1;

let sTermInfo = new Array(0, 21208, 42467, 63836, 85337, 107014, 128867, 150921, 173149, 195551, 218072, 240693,

263343, 285989, 308563, 331033, 353350, 375494, 397447, 419210, 440795, 462224, 483532, 504758);

let solarTerm = new Array("小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋",

"处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至");

let solarTerms = "";

while (solarTerms == "") {

let tmp1 = new Date((31556925974.7 * (yyyy - 1900) + sTermInfo[mm * 2 + 1] * 60000) + Date.UTC(1900, 0, 6, 2, 5));

let tmp2 = tmp1.getUTCDate();

if (tmp2 == dd) solarTerms = solarTerm[mm * 2 + 1];

tmp1 = new Date((31556925974.7 * (yyyy - 1900) + sTermInfo[mm * 2] * 60000) + Date.UTC(1900, 0, 6, 2, 5));

tmp2 = tmp1.getUTCDate();

if (tmp2 == dd) solarTerms = solarTerm[mm * 2];

if (dd > 1) {

dd = dd - 1;

} else {

mm = mm - 1;

if (mm < 0) {

yyyy = yyyy - 1;

mm = 11;

}

dd = 31;

}

}

return solarTerms;

},

/**

* 此方法可以获取该日期处于某季节

*

* getSeason() //当天处于某季节

* */

getSeason: function(yyyy, mm, dd) {

//获取节气

let jq = this.getjq(yyyy, mm, dd);

if (jq == "立春" || jq == "雨水" || jq == "惊蛰" || jq == "春分" || jq == "清明" || jq == "谷雨") {

return '春';

} else if (jq == "立夏" || jq == "小满" || jq == "芒种" || jq == "夏至" || jq == "小暑" || jq == "大暑") {

return '夏';

} else if (jq == "立秋" || jq == "处暑" || jq == "白露" || jq == "秋分" || jq == "寒露" || jq == "霜降") {

return '秋';

} else if (jq == "立冬" || jq == "小雪" || jq == "大雪" || jq == "冬至" || jq == "小寒" || jq == "大寒") {

return '冬';

}

}

}

java 判断当前时间节气,请问js获取阴历节气后根据节气判断春夏秋冬四季?该怎么写呢...相关推荐

  1. java怎么将时间格式化输出_Java获取时间日期并格式化输出

    Java获取当前系统时间.自定义时间和日期格式化输出部分应用总结 1.java获取当前时间,并格式化输出,如2018-12-01 11:20:11 // 获取当前时间,并格式化输出,如2018-12- ...

  2. js根据判断改变html字符串长度,JS获取字符串长度(包含汉字)的简单示例

    这篇文章主要为大家详细介绍了JS获取字符串长度(包含汉字)的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. 方法一: /** * * @p ...

  3. js获取html文本框值,判断,跳转

    //html: <input type="text" id="user"/> <button onClick="beat()&quo ...

  4. html判断字段不为空,js里是否为空字符串的判断

    了解下js里是否为空字符串的判断. JavaScript中可以使用if(typeof obj=="undefined"||obj==null||obj=="") ...

  5. 数据库之postgreSql时间计算,例如获取前一天、后一天等。

    一.获取系统时间函数 1.1 获取当前完整时间 select now(); select now(); now ------------------------------- 2013-04-12 1 ...

  6. js获取n天后的日期

    1. 获取n天后的日期, n可为正数,可以为负数 /*** 计算n天后的日期* initDate:开始日期,默认为当天日期, 格式:yyyymmdd/yyyy-mm-dd* days:天数* flag ...

  7. JS获取前一年或后一年的时间

    我们可以封装一个函数 const lastYear = function(type,index){let dateTime = new Date().getFullYear(); /* 获取现在的年份 ...

  8. java日期或时间加减(获取前几天或后几天)

    //获取当前日期 java.sql.Date endTime = new java.sql.Date(new java.util.Date().getTime());//当前日期 //减去七天 Cal ...

  9. js 获取用户当前使用的 浏览器 判断是否谷歌浏览器

    //判断浏览器 function myBrowser() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera ...

  10. JS 获取当前年份后两位的问题

    转载自:来源 所周知,js里面有个内置对象Date,记录了有关系统时间的信息. 我们只要实例化一个Date对象,var date= new Date(); 然后就可以用这个对象获取有关当前时间的各种信 ...

最新文章

  1. Android启动过程深入解析
  2. Thinkpad系统重装终极版
  3. android studio lambda插件,在Android Studio中使用Lambda表达式(retrolambda)
  4. hi3798mv300是什么手机_华为海思电视芯片hi3798mv300 硬件参数如何?
  5. Crontab定时任务访问url实例
  6. 在虚拟机中ftp服务器的配置,ftp服务器在虚拟机中配置文件
  7. 迁移分支_资料 | 迁移学习简明手册
  8. windows x64 软件约定
  9. 鲍勃·维德拉:一位硬件工程师的叛逆传奇 | 人物志
  10. 洛谷P1088 火星人__(作业)
  11. Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (高级)
  12. 计算机微软云同步怎样安装软件,云骑士Win10微软账户设置同步的方法
  13. uni-app 生成安卓证书
  14. Rabbitmq Plugin configuration unchanged. 问题完全解决方案
  15. 关于js如何获取鼠标划过文本的内容与下标
  16. 软件特性开发的流程感想
  17. 生成一个点开跳出情人节快乐和鲜花的python代码文件
  18. CFD(计算流体动力学)在直升机中的应用
  19. 文明重启哪个服务器最多,文明重启攻略 新手快速霸服技巧分享[多图]
  20. 多项式polynomial 考试 解题报告

热门文章

  1. 能链发布数字藏品为用户定制专属数字礼物
  2. linux蓝牙打印机驱动安装失败怎么办,打印机驱动安装失败怎么办?
  3. (转)gzip文件格式详解
  4. 刷屏专用超长复制_求超长的刷屏文字
  5. Verilog学习笔记(7)Modelsim仿真_三角波发生器
  6. 数字转换大写英文字母
  7. 图像的均值、均方值、方差、均方差、标准差
  8. 装黑苹果的那些事儿(以ThinkpadE540为例)
  9. 机器人阿莫西_HELLO!阿莫西 本田机器人ASIMO
  10. 十道解分式方程及答案_100道八年级解分式方程练习题(带答案)