`

JAVA版农历和阳历相互转换

阅读更多
JAVA版农历和阳历相互转换
//测试类
public class Test ...{
  
public static void main(String[] args) ...{
      
//调用农历日期转换阳历日期方法
    System.out.println(Calendar.sCalendarLundarToSolar(2006,1,1));
  }

}


//自定义日历类
class Calendar ...{

 
// Array lIntLunarDay is stored in the monthly day information in every year from 1901 to 2100 of the lunar calendar,
 
// The lunar calendar can only be 29 or 30 days every month, express with 12(or 13) pieces of binary bit in one year,
 
// it is 30 days for 1 form in the corresponding location , otherwise it is 29 days
 private static final int[] iLunarMonthDaysTable = ...{
     
0x4ae00xa5700x52680xd2600xd9500x6aa80x56a00x9ad00x4ae80x4ae0,   // 1910
     0xa4d80xa4d00xd2500xd5480xb5500x56a00x96d00x95b00x49b80x49b0,   // 1920
     0xa4b00xb2580x6a500x6d400xada80x2b600x95700x49780x49700x64b0,   // 1930
     0xd4a00xea500x6d480x5ad00x2b600x93700x92e00xc9680xc9500xd4a0,   // 1940
     0xda500xb5500x56a00xaad80x25d00x92d00xc9580xa9500xb4a80x6ca0,   // 1950
     0xb5500x55a80x4da00xa5b00x52b80x52b00xa9500xe9500x6aa00xad50,   // 1960
     0xab500x4b600xa5700xa5700x52600xe9300xd9500x5aa80x56a00x96d0,   // 1970
     0x4ae80x4ad00xa4d00xd2680xd2500xd5280xb5400xb6a00x96d00x95b0,   // 1980
     0x49b00xa4b80xa4b00xb2580x6a500x6d400xada00xab600x93700x4978,   // 1990
     0x49700x64b00x6a500xea500x6b280x5ac00xab600x93680x92e00xc960,   // 2000
     0xd4a80xd4a00xda500x5aa80x56a00xaad80x25d00x92d00xc9580xa950,   // 2010
     0xb4a00xb5500xb5500x55a80x4ba00xa5b00x52b80x52b00xa9300x74a8,   // 2020
     0x6aa00xad500x4da80x4b600x95700xa4e00xd2600xe9300xd5300x5aa0,   // 2030
     0x6b500x96d00x4ae80x4ad00xa4d00xd2580xd2500xd5200xdaa00xb5a0,   // 2040
     0x56d00x4ad80x49b00xa4b80xa4b00xaa500xb5280x6d200xada00x55b0    // 2050
 }
;

 
// Array iLunarLeapMonthTable preserves the lunar calendar  leap month from 1901 to 2050,
 
// if it is 0 express not to have , every byte was stored for two years
 private static final char[] iLunarLeapMonthTable = ...{
     
0x000x500x040x000x20,   // 1910
     0x600x050x000x200x70,   // 1920
     0x050x000x400x020x06,   // 1930
     0x000x500x030x070x00,   // 1940
     0x600x040x000x200x70,   // 1950
     0x050x000x300x800x06,   // 1960
     0x000x400x030x070x00,   // 1970
     0x500x040x080x000x60,   // 1980
     0x040x0a0x000x600x05,   // 1990
     0x000x300x800x050x00,   // 2000
     0x400x020x070x000x50,   // 2010
     0x040x090x000x600x04,   // 2020
     0x000x200x600x050x00,   // 2030
     0x300xb00x060x000x50,   // 2040
     0x020x070x000x500x03    // 2050
 }
;

 
// Array iSolarLunarTable stored the offset days
 
// in New Year of solar calendar and lunar calendar from 1901 to 2050;
 private static final char[] iSolarLunarOffsetTable = ...{
   
49382846342443322140,  // 1910
   29483625443422413150,  // 1920
   38274635234332224029,  // 1930
   47362544342341304938,  // 1940
   26453524433221402847,  // 1950
   36264433234230483827,  // 1960
   45352443322039294736,  // 1970
   26453322413048372746,  // 1980
   35244332503928473626,  // 1990
   45342240304937274635,  // 2000
   23423121392848372544,  // 2010
   33234131503928473524,  // 2020
   42302140284736254333,  // 2030
   22413049372644332342,  // 2040
   31214029473625443222,  // 2050
 }
;


 
static boolean bIsSolarLeapYear(int iYear)...{
  
return ((iYear % 4 == 0&& (iYear % 100 != 0|| iYear % 400 == 0);
 }


 
// The days in the month of solar calendar
 static int iGetSYearMonthDays(int iYear, int iMonth)...{
  
if((iMonth == 1|| (iMonth == 3|| (iMonth == 5)||
    (iMonth 
== 7|| (iMonth ==
分享到:
评论

相关推荐

    阴历阳历相互转换程序源代码

    c语言,阴历阳历相互转换程序源代码。旨在学习c语言。

    阴历阳历相互转换程序

    c语言命令行界面程序,阴历阳历相互转换的程序。旨在学习C语言

    C# winform 阴历与阳历之间相互转化

    C# winform 阴历与阳历之间相互转化,用的是combox选择阳历(阴历的)年月日,点击转换按钮即可转换,阴历显示的是汉字(考虑了闰月),

    excel阳历阴历的相互转换

    实现了excel中阳历日期到阴历、阴历到阳历的相互转换,对于统计集体信息情况(如通讯录)具有很实用的价值

    阳历与阴历相互转换的软件

    自己刚学asp.net 尝试则去编写了一个阳历与阴历互转的软件,基本上对所有的控件都做了处理,界面也美化了,能完成阳历对阴历的转换,和阴历对阳历的转换,界面上有系统时间(精确到秒),

    VC++ 阳历与农历转换程序,也就是公历与阴历的相互转换,部分代码是从网上找到的,重新修正了一大部分代码,大家也可以把它当作控件来使用,因为我不初就是想想这样一个程序,奉献给大家。

    VC++ 阳历与农历转换程序,也就是公历与阴历的相互转换,部分代码是从网上找到的,重新修正了一大部分代码,大家也可以把它当作控件来使用,因为我不初就是想想这样一个程序,奉献给大家。

    MATLAB实现阳历、阴历与干支历的日期转换

    (1)实现阴历与阳历的相互转换; (2)实现阳历、阴历与干支历的转换; (3)不仅包含传统阴历月的天数表,还新增历年干支月的天数表; (4)1900年历年年。

    公历(阳历)和农历(阴历)相互转换

    公历(阳历)和农历(阴历)相互转换,公历转农历代码是从网上当的,我做了农历转公历的代码并写了示例程序。其实网上也有很多有关公历转农历的控件,但作为一个程序员就是不太习惯于使用别人的控件,因为那样将不便...

    日期天数计算器V2.0绿色版

    软件功能强大,可以根据给定的开始和结束日期来计算天数,可以阴历和阳历相互转换,让你轻松知道日历天数数还剩多少缺多少。也可以转换阴阳历! 日期天数计算器功能特点: 1. 根据给定的开始和结束日期计算天数...

    calendarist:一个可实现阳历、阴历、干支历间相互转换的JAVA工具

    历法计算家,可实现阳历、阴历、干支历的相互转换使用方法Maven引用<dependency> <groupId>org.hothub</groupId> <artifactId>calendarist</artifactId> <version>1.0.7</version></dependency>功能介绍支持1900 - ...

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

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

    带公历和农历相互转换的生日选择器

    这种情况下选择生日就有点牵强,本人最近在做的一个项目中需要用户输入自己的生日,既可选择公历,也可选择农历,经过研究做出了这种生日选择器,可以任意切换公历和农历,公历农历相互转换的算法90%是本人原创,...

    C#阴历生日提醒下阳历转阴历

    阴历生日提醒:主要应用与CRM,ERP,会员系统等等。功能很小但是用处很大。 解决问题是:存入员工的...4.读取数据库日期和转换的阴历时间相互匹配。 里面也处理了闰月,代码简洁易懂。拿到任何项目都可以使用 C#语言编写

    阴阳历转换示例程序(vc6)

    公历(阳历)和农历(阴历)相互转换,公历转农历代码是从网上当的,做了农历转公历的代码并写了示例程序。

    VC 农历、公历转换程序.rar

    公历(阳历)和农历(阴历)相互转换,公历转农历代码是从网上当的,农历转公历的代码并写了示例程序。其实网上也有很多有关公历转农历的控件,但作为一个程序员就是不太习惯于使用别人的控件,因为那样将不便调试和...

    农历、阳历互相转换的VC++程序

    内容索引:VC/C++源码,其它分类,日历转换 阳历与农历转换程序,也就是公历与阴历的相互转换,部分代码是从网上找到的,重新修正了一大部分代码,大家也可以把它当作控件来使用,因为我不初就是想想这样一个程序,...

    vc++农历-公历、阴历-阳历互转程序

    VC++完成的公历(阳历)、农历(阴历)相互转换程序,网上虽有很多公历转农历的控件,但作为一个程序员,使用别人的控件总感觉脸红红的,好像是只图省事而不愿去研究,再一方面,使用其它人的控件也会使你的程序变得...

    C的一个农历太阳历相互转化的库

    这个是一个新的版本的日期计算库。...这次已经可以在阳历和农历间相互转化了。支持的日期范围是1900-1-31 到2099-12-31. 哈哈,分享下这个小东西。 啊,对了,是utf8的编码的哦,如果在window下看的可能要转下编码。

    Javascript农历与公历相互转换的简单实例

    农历转化公历 * Lunar.toLunar(2016, 7, 6); 公历转化农历 */ var Lunar = { MIN_YEAR : 1891, MAX_YEAR : 2100, lunarInfo : [ [0,2,9, 21936], [6,1,30, 9656], [0,2,17, 9584], [0,2,6, 21168], [5,1,26,...

Global site tag (gtag.js) - Google Analytics