Android 农历日历算法

这个博客详细介绍了如何在Android平台上实现农历日历的算法,包括农历年月日的转换、节假日和节气的计算。通过提供的代码,可以进行农历和公历的相互转换,并获取特定日期的宜忌信息。此外,还涵盖了24节气和部分传统节日的农历日期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import android.util.Log;


public class LunarCalendar {
	private int year; // 农历的年份
	private int month;
	private int day; 
	private String lunarMonth; // 农历的月份
	private boolean leap;
	public int leapMonth = 0; // 闰的是哪个月
 
	final static String chineseNumber[] = { "正", "二", "三", "四", "五", "六", "七",
			"八", "九", "十", "冬", "腊" };
	static SimpleDateFormat chineseDateFormat = new SimpleDateFormat(
			"yyyy年MM月dd日");
	final static long[] lunarInfo = new long[] { 
		    0x4bd8, 0x4ae0, 0xa570, 0x54d5, 0xd260, 0xd950, 0x5554, 0x56af, 0x9ad0, 0x55d2,
	        0x4ae0, 0xa5b6, 0xa4d0, 0xd250, 0xd255, 0xb54f, 0xd6a0, 0xada2, 0x95b0, 0x4977,
	        0x497f, 0xa4b0, 0xb4b5, 0x6a50, 0x6d40, 0xab54, 0x2b6f, 0x9570, 0x52f2, 0x4970,
	        0x6566, 0xd4a0, 0xea50, 0x6a95, 0x5adf, 0x2b60, 0x86e3, 0x92ef, 0xc8d7, 0xc95f,
	        0xd4a0, 0xd8a6, 0xb55f, 0x56a0, 0xa5b4, 0x25df, 0x92d0, 0xd2b2, 0xa950, 0xb557,
	        0x6ca0, 0xb550, 0x5355, 0x4daf, 0xa5b0, 0x4573, 0x52bf, 0xa9a8, 0xe950, 0x6aa0,
	        0xaea6, 0xab50, 0x4b60, 0xaae4, 0xa570, 0x5260, 0xf263, 0xd950, 0x5b57, 0x56a0,
	        0x96d0, 0x4dd5, 0x4ad0, 0xa4d0, 0xd4d4, 0xd250, 0xd558, 0xb540, 0xb6a0, 0x95a6,
	        0x95bf, 0x49b0, 0xa974, 0xa4b0, 0xb27a, 0x6a50, 0x6d40, 0xaf46, 0xab60, 0x9570,
	        0x4af5, 0x4970, 0x64b0, 0x74a3, 0xea50, 0x6b58, 0x5ac0, 0xab60, 0x96d5, 0x92e0,
	        0xc960, 0xd954, 0xd4a0, 0xda50, 0x7552, 0x56a0, 0xabb7, 0x25d0, 0x92d0, 0xcab5,
	        0xa950, 0xb4a0, 0xbaa4, 0xad50, 0x55d9, 0x4ba0, 0xa5b0, 0x5176, 0x52bf, 0xa930,
	        0x7954, 0x6aa0, 0xad50, 0x5b52, 0x4b60, 0xa6e6, 0xa4e0, 0xd260, 0xea65, 0xd530,
	        0x5aa0, 0x76a3, 0x96d0, 0x4afb, 0x4ad0, 0xa4d0, 0xd0b6, 0xd25f, 0xd520, 0xdd45,
	        0xb5a0, 0x56d0, 0x55b2, 0x49b0, 0xa577, 0xa4b0, 0xaa50, 0xb255, 0x6d2f, 0xada0,
	        0x4b63, 0x937f, 0x49f8, 0x4970, 0x64b0, 0x68a6, 0xea5f, 0x6b20, 0xa6c4, 0xaaef,
	        0x92e0, 0xd2e3, 0xc960, 0xd557, 0xd4a0, 0xda50, 0x5d55, 0x56a0, 0xa6d0, 0x55d4,
	        0x52d0, 0xa9b8, 0xa950, 0xb4a0, 0xb6a6, 0xad50, 0x55a0, 0xaba4, 0xa5b0, 0x52b0,
	        0xb273, 0x6930, 0x7337, 0x6aa0, 0xad50, 0x4b55, 0x4b6f, 0xa570, 0x54e4, 0xd260,
	        0xe968, 0xd520, 0xdaa0, 0x6aa6, 0x56df, 0x4ae0, 0xa9d4, 0xa4d0, 0xd150, 0xf252,
	        0xd520};

	// 农历部分假日
	final static String[] lunarHoliday = new String[] { 
		"0101 春节", 
		"0115 元宵节",
		"0505 端午节", 
		"0707 七夕情人节", 
		"0715 中元节 孟兰节",
		"0730 地藏节",
		"0802 灶君诞",
		"0815 中秋节", 
		"0827 先师诞",
		"0909 重阳节", 
		"1208 腊八节  释迦如来成道日",
		"1223 小年", 
		"0100 除夕" };

	// 公历部分节假日
	final static String[] solarHoliday = new String[] { 
		"0101 元旦",
		"0110 中国110宣传日",
		"0214 情人",
		"0221 国际母语日",
		"0303 国际爱耳日",
		"0308 妇女节", 
		"0312 植树节", 
		"0315 消费者权益日", 
		"0322 世界水日",
		"0323 世界气象日",
		"0401 愚人节", 
		"0407 世界卫生日",
		"0501 劳动节",
		"0504 青年节", 
		"0512 护士节", 
		"0519 全国助残日",
		"0531 世界无烟日",
		"0601 儿童节",
		"0626 国际禁毒日",
		"0701 建党节", //1921
		"0801 建军节", //1933
		//"0808 父亲节",
		"0909 毛泽东逝世纪念", //1976
		"0910 教师节",
		"0917 国际和平日",
		"0927 世界旅游日",
		"0928 孔子诞辰", 
		"1001 国庆节", 
		"1006 老人节",
		"1007 国际住房日",
		"1014 世界标准日",
		"1024 联合国日", 
		"1112 孙中山诞辰纪念", 
		"1210 世界人权日",
		"1220 澳门回归纪念", 
		"1224 平安夜",
		"1225 圣诞节",
		"1226 毛泽东诞辰纪念" };
   //24节气
	final static String[] sTermInfo = new String[]{
	   // 时节     气候  
		"小寒","大寒",
		"立春","雨水",
		"惊蛰","春分",
		"清明","谷雨",
		"立夏","小满",
		"芒种","夏至",
		"小暑","大暑",
		"立秋","处暑",
		"白露","秋分",
		"寒露","霜降",
		"立冬","小雪",
		"大雪","冬至"
	};
	final static String[] constellations = new String[]{
		"摩蝎座:12.22—01.19","水瓶座:01.20—02.18","双鱼座:02.19—03.20","白羊座:03.21—04.19",
		"金牛座:04.20—05.20","双子座:05.21—06.20","巨蟹座:06.21—07.21","狮子座:07.22—08.22",
		"处女座:08.23—09.22","天秤座:09.23—10.22","天蝎座:10.23—11.21","射手座:11.22—12.21"
	};
	
	final static String[] yi_string = new String[]{
		"出行.上任.会友.上书.见工","除服.疗病.出行.拆卸.入宅",
		"祈福.祭祀.结亲.开市.交易","祭祀.修填.涂泥.余事勿取",
		"交易.立券.会友.签约.纳畜","祈福.祭祀.求子.结婚.立约",
		"求医.赴考.祭祀.余事勿取","经营.交易.求官.纳畜.动土",
		"祈福.入学.开市.求医.成服","祭祀.求财.签约.嫁娶.订盟",
		"疗病.结婚.交易.入仓.求职","祭祀.交易.收财.安葬"
	};
	final static String[] ji_string = new String[]{
		"动土.开仓.嫁娶.纳采","求官.上任.开张.搬家.探病",
		"服药.求医.栽种.动土.迁移","移徙.入宅.嫁娶.开市.安葬",
		"种植.置业.卖田.掘井.造船","开市.交易.搬家.远行",
		"动土.出行.移徙.开市.修造","登高.行船.安床.入宅.博彩",
		"词讼.安门.移徙","开市.安床.安葬.入宅.破土",
		"安葬.动土.针灸","宴会.安床.出行.嫁娶.移徙"
	};
	final static String[][] jcName = new String[][]{
		{"建","除","满","平","定","执","破","危","成","收","开","闭"},
		{"闭","建","除","满","平","定","执","破","危","成","收","开"},
		{"开","闭","建","除","满","平","定","执","破","危","成","收"},
		{"收","开","闭","建","除","满","平","定","执","破","危","成"},
		{"成","收","开","闭","建","除","满","平","定","执","破","危"},
		{"危","成","收","开","闭","建","除","满","平","定","执","破"},
		{"破","危","成","收","开","闭","建"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值