`
txf2004
  • 浏览: 7133713 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript农历转换类

 
阅读更多

今天在做项目的时候需要用到JavaScript农历转换算法,从网上搜索并整理了一下,重新写出一个JavaScript农历转换类,不敢独占,特此与大家分享。

  1. /*!
  2. * LunarDate v1.0.0
  3. * http://www.clanfei.com/
  4. *
  5. * Author: Lanfei
  6. * Date: 2013-1-24
  7. */
  8. varLunarDate={
  9. madd:newArray(0,31,59,90,120,151,181,212,243,273,304,334),
  10. HsString:'甲乙丙丁戊己庚辛壬癸',
  11. EbString:'子丑寅卯辰巳午未申酉戌亥',
  12. NumString:"一二三四五六七八九十",
  13. MonString:"正二三四五六七八九十冬腊",
  14. CalendarData:newArray(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),
  15. Year:null,
  16. Month:null,
  17. Day:null,
  18. TheDate:null,
  19. GetBit:function(m,n){
  20. return(m>>n)&1;
  21. },
  22. e2c:function(){
  23. this.TheDate=(arguments.length!=3)?newDate():newDate(arguments[0],arguments[1],arguments[2]);
  24. vartotal,m,n,k;
  25. varisEnd=false;
  26. vartmp=this.TheDate.getFullYear();
  27. total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+this.madd[this.TheDate.getMonth()]+this.TheDate.getDate()-38;
  28. if(this.TheDate.getYear()%4==0&&this.TheDate.getMonth()>1){
  29. total++;
  30. }
  31. for(m=0;;m++){
  32. k=(this.CalendarData[m]<0xfff)?11:12;
  33. for(n=k;n>=0;n--){
  34. if(total<=29+this.GetBit(this.CalendarData[m],n)){
  35. isEnd=true;
  36. break;
  37. }
  38. total=total-29-this.GetBit(this.CalendarData[m],n);
  39. }
  40. if(isEnd)
  41. break;
  42. }
  43. this.Year=1921+m;
  44. this.Month=k-n+1;
  45. this.Day=total;
  46. if(k==12){
  47. if(this.Month==Math.floor(this.CalendarData[m]/0x10000)+1){
  48. this.Month=1-this.Month;
  49. }
  50. if(this.Month>Math.floor(this.CalendarData[m]/0x10000)+1){
  51. this.Month--;
  52. }
  53. }
  54. },
  55. GetcDateString:function(){
  56. vartmp="";
  57. tmp+=this.HsString.charAt((this.Year-4)%10);
  58. tmp+=this.EbString.charAt((this.Year-4)%12);
  59. tmp+="年 ";
  60. if(this.Month<1){
  61. tmp+="(闰)";
  62. tmp+=this.MonString.charAt(-this.Month-1);
  63. }else{
  64. tmp+=this.MonString.charAt(this.Month-1);
  65. }
  66. tmp+="月";
  67. tmp+=(this.Day<11)?"初":((this.Day<20)?"十":((this.Day<30)?"廿":"三十"));
  68. if(this.Day%10!=0||this.Day==10){
  69. tmp+=this.NumString.charAt((this.Day-1)%10);
  70. }
  71. returntmp;
  72. },
  73. GetLunarDay:function(solarYear,solarMonth,solarDay){
  74. if(solarYear<1921||solarYear>2020){
  75. return"";
  76. }else{
  77. solarMonth=(parseInt(solarMonth)>0)?(solarMonth-1):11;
  78. this.e2c(solarYear,solarMonth,solarDay);
  79. returnthis.GetcDateString();
  80. }
  81. }
  82. };

调用方法:

  1. LunarDate.GetLunarDay(2013,1,24);



=======================签 名 档=======================

原文地址(我的博客):http://www.clanfei.com/2013/01/1683.html
欢迎访问交流,至于我为什么要多弄一个博客,因为我热爱前端,热爱网页,我更希望有一个更加自由、真正属于我自己的小站,或许并不是那么有名气,但至少能够让我为了它而加倍努力。。
=======================签 名 档=======================




分享到:
评论

相关推荐

    Web前端农历转换,阴历转换

    为解决Web前端的农历转换,现将相关的前端转换代码共享给大家,JavaScript公历转换、农历转换、阴历转换、阳历转换

    js农历公历日期相互转换函数javascript日期转换

    调用简单,下拉传一日期加类型即可转换日期的类型,如: CalConvert(new Date(2010,3,19), false) //农历转换为公历 CalConvert(new Date(2010,3,19), true)//公历转换成农历

    javascript 农历

    在JavaScript中,我们可以创建一个自定义的类或函数来处理农历转换。这个类通常会包含以下功能: 1. **农历日期到公历日期的转换**:这个过程涉及到农历的月份、日期和年份与公历的对应转换。可以使用一些已知的...

    阳历阴历的转换

    例如,中国的传统节日如春节、中秋节等,都是按照阴历来确定的,因此,准确的阳历阴历转换对于这类应用至关重要。 总结来说,阳历阴历的转换涉及到天文学、历法学和编程技术,HTML文档中的实现可能利用JavaScript来...

    公历转换农历的算法(JavaScript)

    公历转换农历的算法(JavaScript) 公历转换农历的算法是指将公历日期转换为农历日期的过程。公历是国际通用的日期系统,而农历则是中国传统的日期系统。农历的日期系统与公历不同,它的日期是根据月亮的周期变化而...

    支持各种编程语言公历(阳历) 农历(阴历)转换

    公历(阳历) 农历(阴历)转换,支持时间段从 1900-2100 如果需要更长的时间段,利用 generate.htm 生成的数据即可。 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby,swift,golang 等...

    JavaScript 实现农历(万年历)

    在给定的资源中,我们关注的是如何利用JavaScript实现农历,也称为阴历,的功能。农历是东亚地区传统日历系统,与公历不同,它基于月亮的相位变化,对中国的节日和传统有着重要影响。 "万年历"这个概念通常指的是...

    将阳历转换为阴历的JavaScript代码

    改JavaScript控件可以将公历的时间计算转换为阳历

    JavaScript转换农历类实现及调用方法

    在JavaScript中实现农历转换涉及到对农历日历的理解和计算。农历是一种基于月亮周期的日历系统,与公历(阳历)不同,它不遵循固定的日期转换规则。在JavaScript中实现农历转换,通常需要考虑以下几个核心知识点: ...

    详细的公农历转换1.0.rar

    在JavaScript中,`moment.js`或`date-fns`库可以帮助处理日期,`chinese-calendar`库则提供了农历转换功能。 4. **测试**:确保转换的准确性和一致性,需要编写大量的测试用例,包括常规日期、闰年、闰月、特殊日期...

    纯javascript日历,农历,根据网上流传的日历面向对象封装

    在本项目中,我们主要探讨的是一个纯JavaScript实现的日历功能,它包含了农历转换、节日显示以及面向对象的设计思想。这个日历组件可以方便地在网页中多次调用,为用户提供了一个直观的时间管理工具。 首先,让我们...

    js农历日期.rarjs农历日期.rar

    "js农历日期.rar"可能是一个包含资源的压缩包,其中的"js农历日期.html"可能是展示或实现JavaScript农历日期转换的一个示例文件。下面将详细讨论JavaScript处理农历日期的相关知识点。 1. **JavaScript内置日期对象...

    国历与农历转换单元

    - 农历是一种阴阳历,结合了月相变化(阴历)和地球绕太阳的运动(阳历)来制定日期。一年分为12个月,但为了保持与季节的对应关系,会通过设置闰月来调整。 - 农历每个月有29或30天,取决于月亮的盈亏周期。 - ...

    公历转换农历的算法及其JavaScript实现.txt

    公历转换农历的算法及其JavaScript实现.txt

    js农历,javascript 农历,面向对象编程、支持生肖、年号等

    在JavaScript编程中,农历是一个常见的需求,特别...通过理解和应用以上知识点,开发者可以创建一个强大且易用的JavaScript农历库,满足不同项目的需要。同时,文档和示例代码对于提高库的可接受性和可维护性至关重要。

    javascript经典特效---台湾网友做的农历日历.rar

    JavaScript实现农历转换的核心在于算法。首先,我们需要理解公历和农历之间的转换关系。公历是国际通用的日历系统,而农历则主要在中国、台湾、香港、澳门以及部分东南亚国家和地区使用。农历与公历之间的转换涉及到...

    javascript 日历 带农历 节气 节日

    标题中的“javascript 日历 带农历 节气 节日”表明这是一个使用JavaScript编写的日历应用,具有显示农历、节气和节日的功能。在JavaScript编程中,实现这样的功能需要对日期对象有深入理解,同时还需要处理不同历法...

    Flex公历转农历算法

    "Flex公历转农历算法"是一个专为Adobe Flex平台设计的类,用于将公历日期转换为中国的农历日期。这个类借鉴了C++版本的算法,并在Flex环境中进行了实现,使得开发人员能够方便地在ActionScript中处理农历日期。 1. ...

    html_one954_javascript_阳历农历互转_

    HTML和JavaScript是网页开发中的基础技术,而阳历与农历的转换则是许多应用程序中常见的功能,特别是在中国的互联网环境中。在给定的项目“html_one954_javascript_阳历农历互转_”中,我们可以深入理解如何使用...

    程序中用于将阳历改为阴历的类

    本文将详细讨论如何在程序中实现阳历到阴历的转换,主要涉及C#和JavaScript两种编程语言。 首先,我们来理解阳历和阴历的基本概念。阳历是基于地球绕太阳公转周期的天文日历,一年大约365.24天,分为12个月。阴历则...

Global site tag (gtag.js) - Google Analytics