JAVA版农历和阳历相互转换源码

public   class  TestNongLi  ... {
  
public static void main(String[] args) ...{
    
// 调用农历日期转换阳历日期方法
    System.out.println(ChineseCalendar.sCalendarLundarToSolar(200811));
  }

}


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

  
// 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 = ...0x4ae00xa5700x52680xd2600xd9500x6aa80x56a00x9ad00x4ae8,
      
0x4ae0// 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 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值