|
| 阴历阳历转换 |
| |
| [作者:不详 转贴自:不详 点击数: 更新时间:2006-4-6 16:00:43] |
public string FormatLunarDay(ushort iDay) { string szText1 = "初十廿三"; string szText2 = "一二三四五六七八九十"; string strDay; if ((iDay != 20) && (iDay != 30)) { strDay = szText1.Substring((iDay - 1) / 10, 1); strDay = strDay + szText2.Substring((iDay - 1) % 10, 1); } else { //strDay = szText1.Substring((iDay / 10) * 2 + 1, 2); strDay = szText1.Substring((iDay / 10) , 1); strDay = strDay + "十"; } return strDay; } public string GetLunarHolDay() { ushort iYear, iMonth, iDay; int i; TimeSpan ts; iYear = (ushort)(m_Date.Year); if ((iYear < START_YEAR) || (iYear > END_YEAR)) { return "";}; i = l_GetLunarHolDay(); if ((i >= 0) && (i <= 23)) { return LunarHolDayName[i];} else { ts = m_Date - (new DateTime(START_YEAR, 1, 1)); l_CalcLunarDate(out iYear, out iMonth, out iDay, (uint)(ts.Days)); return FormatMonth(iMonth, true) + FormatLunarDay(iDay); } } //返回阴历iLunarYear年的闰月月份,如没有返回0 1901年1月---2050年12月 public int GetLeapMonth(ushort iLunarYear) { byte Flag; if ((iLunarYear < START_YEAR) || (iLunarYear > END_YEAR)) { return 0;}; Flag = gLunarMonth[(iLunarYear - START_YEAR) / 2]; if ((iLunarYear - START_YEAR) % 2 == 0) {return Flag >> 4;} else {return Flag & 0x0F;} } //返回阴历iLunarYer年阴历iLunarMonth月的天数,如果iLunarMonth为闰月, //高字为第二个iLunarMonth月的天数,否则高字为0 1901年1月---2050年12月 public uint LunarMonthDays(ushort iLunarYear, ushort iLunarMonth) { int Height, Low; int iBit; if ((iLunarYear < START_YEAR) || (iLunarYear > END_YEAR)) { return 30; } Height = 0; Low = 29; iBit = 16 - iLunarMonth; if ((iLunarMonth > GetLeapMonth(iLunarYear)) && (GetLeapMonth(iLunarYear) > 0)) {iBit--;} if ((gLunarMonthDay[iLunarYear - START_YEAR] & (1 << iBit)) > 0) {Low++;} if (iLunarMonth == GetLeapMonth(iLunarYear)) { if ((gLunarMonthDay[iLunarYear - START_YEAR] & (1 << (iBit-1)))>0) {Height = 30;} else {Height = 29;} } return (uint)((uint)(Low)|(uint)(Height)<<16); //合成为uint }
|
| |
|
winner 打印本页 关闭窗口 |
|
|