新手小白无聊时做的一个 日历控件,需要的朋友可以借鉴下,高手大神也可以指点一下。
核心代码
/// 获取某年某月有多少天
///
/// 年份
/// 月份
///
public int DaysFromMonth(int _year,int _month)
{
return DateTime.DaysInMonth(_year, _month);
}
// 根据年月返回月份1号的星期
DayOfWeek WeekFromDay(int _year, int _month)
{
return DateTime.Parse(_year + "/" + _month + "/" + 1).DayOfWeek;
}
// 十天干
private static string[] heavenlyStems = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };
// 十二地支
private static string[] earthlyBranches = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };
// 十二生肖
private static string[] zodiacs = { "鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };
<1> 获取农历的年份
///
/// 获取农历的年份
///
///
///
public string GetLunarYear(int _year)
{
if (_year > 3)
{
int hs = (_year - 4) % 10;
int eb = (_year - 4) % 12;
return string.Concat(heavenlyStems[hs], earthlyBranches[eb], "[", zodiacs[eb], "]年");
}
else
{
Debug.Log("----------------- 无效的年份 ----------------");
return "";
}
}
<2> 获取农历的月份
///
/// 获取农历的月份
///
///
///
public string GetLunarMonth(int _month)
{
switch (_month)
{
case 1:
return "正月";
case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10:
return string.Concat(DayToString(_month), "月");
case 11:
return "十一月";
case 12:
return "十二(腊)月";
}
return "";
}
<3> 获取农历的日
///
/// 获取农历的天
///
///
///
public string GetLunarDay(int _day)
{
if (_day < 11)
return "初" + DayToString(_day);
else if (_day > 10 && _day < 21)
return "十" + DayToString(_day % 10);
else if (_day > 20 && _day < 30)
return "廿" + DayToString(_day % 20);
else
return "三十" + DayToString(_day % 30);
}
string DayToString(int _index)
{
switch (_index)
{
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 7:
return "七";
case 8:
return "八";
case 9:
return "九";
case 10:
return "十";
}
return "";
}
///
/// 显示农历日期
///
///
void ShowLunarDateTime()
{
txtLunarDateTime.text = string.Concat(GetLunarYear(year), " ", GetLunarMonth(month), " ", GetLunarDay(day));
}