v1.5.3 LunarMonth增加序号、干支、财神方位等;完善纪念日;因果犯忌支持闰月。

This commit is contained in:
6tail
2023-04-05 10:32:21 +08:00
parent a82d3cd662
commit 37e16f7d44
11 changed files with 336 additions and 101 deletions

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
@@ -78,7 +79,7 @@ namespace Lunar
var l = new List<FotoFestival>();
try
{
l.AddRange(FotoUtil.FESTIVAL[Month + "-" + Day]);
l.AddRange(FotoUtil.FESTIVAL[Math.Abs(Month) + "-" + Day]);
}
catch
{
@@ -88,6 +89,24 @@ namespace Lunar
return l;
}
}
public List<string> OtherFestivals
{
get
{
var l = new List<string>();
try
{
var fs = FotoUtil.OTHER_FESTIVAL[Month + "-" + Day];
l.AddRange(fs);
}
catch
{
// ignored
}
return l;
}
}
public bool MonthZhai => Month == 1 || Month == 5 || Month == 9;

View File

@@ -28,6 +28,10 @@ namespace Lunar
/// 初一的儒略日
/// </summary>
public double FirstJulianDay { get; }
public int Index { get; }
public int ZhiIndex { get; }
/// <summary>
/// 初始化
@@ -36,12 +40,15 @@ namespace Lunar
/// <param name="lunarMonth">农历月1-12闰月为负数如闰2月为-2</param>
/// <param name="dayCount">天数</param>
/// <param name="firstJulianDay">初一的儒略日</param>
public LunarMonth(int lunarYear, int lunarMonth, int dayCount, double firstJulianDay)
/// <param name="index">序号</param>
public LunarMonth(int lunarYear, int lunarMonth, int dayCount, double firstJulianDay, int index)
{
Year = lunarYear;
Month = lunarMonth;
DayCount = dayCount;
FirstJulianDay = firstJulianDay;
Index = index;
ZhiIndex = (index - 1 + LunarUtil.BASE_MONTH_ZHI_INDEX) % 12;
}
/// <summary>
@@ -60,6 +67,49 @@ namespace Lunar
/// </summary>
public bool Leap => Month < 0;
public int GanIndex
{
get
{
var offset = (LunarYear.FromYear(Year).GanIndex + 1) % 5 * 2;
return (Index - 1 + offset) % 10;
}
}
public string Gan => LunarUtil.GAN[GanIndex + 1];
public string Zhi => LunarUtil.ZHI[ZhiIndex + 1];
public string GanZhi => Gan + Zhi;
public string PositionXi => LunarUtil.POSITION_XI[GanIndex + 1];
public string PositionXiDesc => LunarUtil.POSITION_DESC[PositionXi];
public string PositionYangGui => LunarUtil.POSITION_YANG_GUI[GanIndex + 1];
public string PositionYangGuiDesc => LunarUtil.POSITION_DESC[PositionYangGui];
public string PositionYinGui => LunarUtil.POSITION_YIN_GUI[GanIndex + 1];
public string PositionYinGuiDesc => LunarUtil.POSITION_DESC[PositionYinGui];
public string PositionFu => GetPositionFu();
public string GetPositionFu(int sect = 2) {
return (1 == sect ? LunarUtil.POSITION_FU : LunarUtil.POSITION_FU_2)[GanIndex + 1];
}
public string PositionFuDesc => GetPositionFuDesc();
public string GetPositionFuDesc(int sect = 2) {
return LunarUtil.POSITION_DESC[GetPositionFu(sect)];
}
public string PositionCai => LunarUtil.POSITION_CAI[GanIndex + 1];
public string PositionCaiDesc => LunarUtil.POSITION_DESC[PositionCai];
/// <summary>
/// 太岁方位,如艮
/// </summary>

View File

@@ -200,15 +200,7 @@ namespace Lunar
/// <summary>
/// 天神
/// </summary>
public string TianShen
{
get
{
var dayZhi = Lunar.DayZhiExact;
var offset = LunarUtil.ZHI_TIAN_SHEN_OFFSET[dayZhi];
return LunarUtil.TIAN_SHEN[(ZhiIndex + offset) % 12 + 1];
}
}
public string TianShen => LunarUtil.TIAN_SHEN[(ZhiIndex + LunarUtil.ZHI_TIAN_SHEN_OFFSET[Lunar.DayZhiExact]) % 12 + 1];
/// <summary>
/// 天神类型:黄道/黑道

View File

@@ -198,6 +198,7 @@ namespace Lunar
var y = prevYear;
var m = 11;
var index = m;
for (int i = 0, j = dayCounts.Length; i < j; i++)
{
var cm = m;
@@ -205,14 +206,16 @@ namespace Lunar
{
cm = -cm;
}
Months.Add(new LunarMonth(y, cm, dayCounts[i], hs[i] + Solar.J2000));
Months.Add(new LunarMonth(y, cm, dayCounts[i], hs[i] + Solar.J2000, index));
if (y != leapYear || i + 1 != leapIndex)
{
m++;
}
index++;
if (m == 13)
{
m = 1;
index = 1;
y++;
}
}

View File

@@ -122,8 +122,7 @@ namespace Lunar.EightChar
private string GetDiShi(int zhiIndex)
{
var offset = CHANG_SHENG_OFFSET[DayGan];
var index = offset + (DayGanIndex % 2 == 0 ? zhiIndex : -zhiIndex);
var index = CHANG_SHENG_OFFSET[DayGan] + (DayGanIndex % 2 == 0 ? zhiIndex : -zhiIndex);
if (index >= 12)
{
index -= 12;

View File

@@ -5,7 +5,7 @@
<LangVersion>7.1</LangVersion>
<RootNamespace>Lunar</RootNamespace>
<PackageId>lunar-csharp</PackageId>
<PackageVersion>1.5.2</PackageVersion>
<PackageVersion>1.5.3</PackageVersion>
<Title>无依赖的阳历、阴历、道历和佛历工具库</Title>
<Authors>6tail</Authors>
<Description>日历、公历(阳历)、农历(阴历、老黄历)、佛历、道历,节假日、星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶等。</Description>
@@ -15,9 +15,9 @@
<RepositoryType>git</RepositoryType>
<PackageTags>日历;公历;阳历;农历;阴历;老黄历;佛历;道历;法定假日</PackageTags>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AssemblyVersion>1.5.2</AssemblyVersion>
<FileVersion>1.5.2</FileVersion>
<PackageReleaseNotes>优化八字转阳历;修复少量农历年的月份错误;新增农历年天数和当年月份列表</PackageReleaseNotes>
<AssemblyVersion>1.5.3</AssemblyVersion>
<FileVersion>1.5.3</FileVersion>
<PackageReleaseNotes>LunarMonth增加序号、干支、财神方位等完善纪念日因果犯忌支持闰月</PackageReleaseNotes>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">

View File

@@ -36,6 +36,8 @@ namespace Lunar.Util
private static readonly FotoFestival HH = new FotoFestival("月晦", JS, true, "如月小,即戒廿九");
public static readonly Dictionary<string, List<FotoFestival>> FESTIVAL = new Dictionary<string, List<FotoFestival>>();
public static readonly Dictionary<string, List<string>> OTHER_FESTIVAL = new Dictionary<string, List<string>>();
static FotoUtil()
{
@@ -258,6 +260,37 @@ namespace Lunar.Util
FESTIVAL.Add("12-28", new List<FotoFestival>(new[] { R }));
FESTIVAL.Add("12-29", new List<FotoFestival>(new[] { new FotoFestival("华严菩萨诞"), T }));
FESTIVAL.Add("12-30", new List<FotoFestival>(new[] { new FotoFestival("诸神下降,察访善恶", "犯者男女俱亡") }));
OTHER_FESTIVAL.Add("1-1", new List<string>(new[] { "弥勒菩萨圣诞" }));
OTHER_FESTIVAL.Add("1-6", new List<string>(new[] { "定光佛圣诞" }));
OTHER_FESTIVAL.Add("2-8", new List<string>(new[] { "释迦牟尼佛出家" }));
OTHER_FESTIVAL.Add("2-15", new List<string>(new[] { "释迦牟尼佛涅槃" }));
OTHER_FESTIVAL.Add("2-19", new List<string>(new[] { "观世音菩萨圣诞" }));
OTHER_FESTIVAL.Add("2-21", new List<string>(new[] { "普贤菩萨圣诞" }));
OTHER_FESTIVAL.Add("3-16", new List<string>(new[] { "准提菩萨圣诞" }));
OTHER_FESTIVAL.Add("4-4", new List<string>(new[] { "文殊菩萨圣诞" }));
OTHER_FESTIVAL.Add("4-8", new List<string>(new[] { "释迦牟尼佛圣诞" }));
OTHER_FESTIVAL.Add("4-15", new List<string>(new[] { "佛吉祥日" }));
OTHER_FESTIVAL.Add("4-28", new List<string>(new[] { "药王菩萨圣诞" }));
OTHER_FESTIVAL.Add("5-13", new List<string>(new[] { "伽蓝菩萨圣诞" }));
OTHER_FESTIVAL.Add("6-3", new List<string>(new[] { "韦驮菩萨圣诞" }));
OTHER_FESTIVAL.Add("6-19", new List<string>(new[] { "观音菩萨成道" }));
OTHER_FESTIVAL.Add("7-13", new List<string>(new[] { "大势至菩萨圣诞" }));
OTHER_FESTIVAL.Add("7-15", new List<string>(new[] { "佛欢喜日" }));
OTHER_FESTIVAL.Add("7-24", new List<string>(new[] { "龙树菩萨圣诞" }));
OTHER_FESTIVAL.Add("7-30", new List<string>(new[] { "地藏菩萨圣诞" }));
OTHER_FESTIVAL.Add("8-15", new List<string>(new[] { "月光菩萨圣诞" }));
OTHER_FESTIVAL.Add("8-22", new List<string>(new[] { "燃灯佛圣诞" }));
OTHER_FESTIVAL.Add("9-9", new List<string>(new[] { "摩利支天菩萨圣诞" }));
OTHER_FESTIVAL.Add("9-19", new List<string>(new[] { "观世音菩萨出家" }));
OTHER_FESTIVAL.Add("9-30", new List<string>(new[] { "药师琉璃光佛圣诞" }));
OTHER_FESTIVAL.Add("10-5", new List<string>(new[] { "达摩祖师圣诞" }));
OTHER_FESTIVAL.Add("10-20", new List<string>(new[] { "文殊菩萨出家" }));
OTHER_FESTIVAL.Add("11-17", new List<string>(new[] { "阿弥陀佛圣诞" }));
OTHER_FESTIVAL.Add("11-19", new List<string>(new[] { "日光菩萨圣诞" }));
OTHER_FESTIVAL.Add("12-8", new List<string>(new[] { "释迦牟尼佛成道" }));
OTHER_FESTIVAL.Add("12-23", new List<string>(new[] { "监斋菩萨圣诞" }));
OTHER_FESTIVAL.Add("12-29", new List<string>(new[] { "华严菩萨圣诞" }));
}
/// <summary>

View File

@@ -185,7 +185,7 @@ namespace Lunar.Util
/// <summary>
/// 月相
/// </summary>
public static readonly string[] YUE_XIANG = { "", "朔", "既朔", "蛾眉新", "蛾眉新", "蛾眉", "夕", "上弦", "上弦", "九夜", "宵", "宵", "宵", "渐盈凸", "小望", "望", "既望", "立待", "居待", "寝待", "更待", "渐亏凸", "下弦", "下弦", "有明", "有明", "蛾眉残", "蛾眉残", "残", "晓", "晦" };
public static readonly string[] YUE_XIANG = { "", "朔", "既朔", "蛾眉新", "蛾眉新", "蛾眉", "夕", "上弦", "上弦", "九夜", "宵", "宵", "宵", "渐盈凸", "小望", "望", "既望", "立待", "居待", "寝待", "更待", "渐亏凸", "下弦", "下弦", "有明", "有明", "蛾眉残", "蛾眉残", "残", "晓", "晦" };
/// <summary>
/// 地支相冲(子午相冲,丑未相冲,寅申相冲,辰戌相冲,卯酉相冲,巳亥相冲),由于地支对应十二生肖,也就对应了生肖相冲
@@ -1243,8 +1243,7 @@ namespace Lunar.Util
var months = left.Substring(0, left.IndexOf(":", StringComparison.Ordinal));
for (int i = 0, j = months.Length; i < j; i += 2)
{
var m = months.Substring(i, 2);
if (m.Equals(month))
if (months.Substring(i, 2).Equals(month))
{
matched = true;
break;
@@ -1256,8 +1255,7 @@ namespace Lunar.Util
ys = ys.Substring(0, ys.IndexOf(",", StringComparison.Ordinal));
for (int i = 0, j = ys.Length; i < j; i += 2)
{
var m = ys.Substring(i, 2);
l.Add(YI_JI[Int32.Parse(m, NumberStyles.HexNumber)]);
l.Add(YI_JI[int.Parse(ys.Substring(i, 2), NumberStyles.HexNumber)]);
}
break;
}
@@ -1295,8 +1293,7 @@ namespace Lunar.Util
var months = left.Substring(0, left.IndexOf(":", StringComparison.Ordinal));
for (int i = 0, j = months.Length; i < j; i += 2)
{
var m = months.Substring(i, 2);
if (m.Equals(month))
if (months.Substring(i, 2).Equals(month))
{
matched = true;
break;
@@ -1307,8 +1304,7 @@ namespace Lunar.Util
var js = left.Substring(left.IndexOf(",", StringComparison.Ordinal) + 1);
for (int i = 0, j = js.Length; i < j; i += 2)
{
var m = js.Substring(i, 2);
l.Add(YI_JI[int.Parse(m, NumberStyles.HexNumber)]);
l.Add(YI_JI[int.Parse(js.Substring(i, 2), NumberStyles.HexNumber)]);
}
break;
}
@@ -1344,8 +1340,7 @@ namespace Lunar.Util
var js = left.Substring(0, left.IndexOf(",", StringComparison.Ordinal));
for (int i = 0, j = js.Length; i < j; i += 2)
{
string m = js.Substring(i, 2);
l.Add(SHEN_SHA[int.Parse(m, NumberStyles.HexNumber)]);
l.Add(SHEN_SHA[int.Parse(js.Substring(i, 2), NumberStyles.HexNumber)]);
}
}
if (l.Count < 1)
@@ -1378,8 +1373,7 @@ namespace Lunar.Util
var xs = left.Substring(left.IndexOf(",", StringComparison.Ordinal) + 1);
for (int i = 0, j = xs.Length; i < j; i += 2)
{
var m = xs.Substring(i, 2);
l.Add(SHEN_SHA[int.Parse(m, NumberStyles.HexNumber)]);
l.Add(SHEN_SHA[int.Parse(xs.Substring(i, 2), NumberStyles.HexNumber)]);
}
}
if (l.Count < 1)
@@ -1411,8 +1405,7 @@ namespace Lunar.Util
var ys = left.Substring(0, left.IndexOf(",", StringComparison.Ordinal));
for (int i = 0, j = ys.Length; i < j; i += 2)
{
var m = ys.Substring(i, 2);
l.Add(YI_JI[int.Parse(m, NumberStyles.HexNumber)]);
l.Add(YI_JI[int.Parse(ys.Substring(i, 2), NumberStyles.HexNumber)]);
}
}
if (l.Count < 1)
@@ -1444,8 +1437,7 @@ namespace Lunar.Util
var js = left.Substring(left.IndexOf(",", StringComparison.Ordinal) + 1);
for (int i = 0, j = js.Length; i < j; i += 2)
{
var m = js.Substring(i, 2);
l.Add(YI_JI[int.Parse(m, NumberStyles.HexNumber)]);
l.Add(YI_JI[int.Parse(js.Substring(i, 2), NumberStyles.HexNumber)]);
}
}
if (l.Count<1)

View File

@@ -53,75 +53,149 @@ namespace Lunar.Util
WEEK_FESTIVAL.Add("3-0-1", "全国中小学生安全教育日");
WEEK_FESTIVAL.Add("5-2-0", "母亲节");
WEEK_FESTIVAL.Add("5-3-0", "全国助残日");
WEEK_FESTIVAL.Add("6-3-0", "父亲节");
WEEK_FESTIVAL.Add("9-3-6", "全民国防教育日");
WEEK_FESTIVAL.Add("10-1-1", "世界住房日");
WEEK_FESTIVAL.Add("11-4-4", "感恩节");
OTHER_FESTIVAL.Add("1-8", new List<string>(new[] { "周恩来逝世纪念日" }));
OTHER_FESTIVAL.Add("1-10", new List<string>(new[] { "中国人民警察节", "中国公安110宣传日" }));
OTHER_FESTIVAL.Add("1-21", new List<string>(new[] { "列宁逝世纪念日" }));
OTHER_FESTIVAL.Add("1-26", new List<string>(new[] { "国际海关日" }));
OTHER_FESTIVAL.Add("2-2", new List<string>(new[] { "世界湿地日" }));
OTHER_FESTIVAL.Add("2-4", new List<string>(new[] { "世界抗癌日" }));
OTHER_FESTIVAL.Add("2-7", new List<string>(new[] { "京汉铁路罢工纪念" }));
OTHER_FESTIVAL.Add("2-10", new List<string>(new[] { "国际气象节" }));
OTHER_FESTIVAL.Add("2-19", new List<string>(new[] { "邓小平逝世纪念日" }));
OTHER_FESTIVAL.Add("2-21", new List<string>(new[] { "国际母语日" }));
OTHER_FESTIVAL.Add("2-24", new List<string>(new[] { "第三世界青年日" }));
OTHER_FESTIVAL.Add("3-1", new List<string>(new[] { "国际海豹日" }));
OTHER_FESTIVAL.Add("3-3", new List<string>(new[] { "全国爱耳日" }));
OTHER_FESTIVAL.Add("3-5", new List<string>(new[] { "周恩来诞辰纪念日", "中国青年志愿者服务日" }));
OTHER_FESTIVAL.Add("3-6", new List<string>(new[] { "世界青光眼日" }));
OTHER_FESTIVAL.Add("3-12", new List<string>(new[] { "孙中山逝世纪念日" }));
OTHER_FESTIVAL.Add("3-14", new List<string>(new[] { "马克思逝世纪念日" }));
OTHER_FESTIVAL.Add("3-17", new List<string>(new[] { "国际航海日" }));
OTHER_FESTIVAL.Add("3-18", new List<string>(new[] { "全国科技人才活动日" }));
OTHER_FESTIVAL.Add("3-21", new List<string>(new[] { "世界森林日", "世界睡眠日" }));
OTHER_FESTIVAL.Add("3-22", new List<string>(new[] { "世界水日" }));
OTHER_FESTIVAL.Add("3-23", new List<string>(new[] { "世界气象日" }));
OTHER_FESTIVAL.Add("3-24", new List<string>(new[] { "世界防治结核病日" }));
OTHER_FESTIVAL.Add("4-2", new List<string>(new[] { "国际儿童图书日" }));
OTHER_FESTIVAL.Add("4-7", new List<string>(new[] { "世界卫生日" }));
OTHER_FESTIVAL.Add("4-22", new List<string>(new[] { "列宁诞辰纪念日" }));
OTHER_FESTIVAL.Add("4-23", new List<string>(new[] { "世界图书和版权日" }));
OTHER_FESTIVAL.Add("4-26", new List<string>(new[] { "世界知识产权日" }));
OTHER_FESTIVAL.Add("5-3", new List<string>(new[] { "世界新闻自由日" }));
OTHER_FESTIVAL.Add("5-5", new List<string>(new[] { "马克思诞辰纪念日" }));
OTHER_FESTIVAL.Add("5-8", new List<string>(new[] { "世界红十字日" }));
OTHER_FESTIVAL.Add("5-11", new List<string>(new[] { "世界肥胖日" }));
OTHER_FESTIVAL.Add("5-25", new List<string>(new[] { "525心理健康节" }));
OTHER_FESTIVAL.Add("5-27", new List<string>(new[] { "上海解放日" }));
OTHER_FESTIVAL.Add("5-31", new List<string>(new[] { "世界无烟日" }));
OTHER_FESTIVAL.Add("6-5", new List<string>(new[] { "世界环境日" }));
OTHER_FESTIVAL.Add("6-6", new List<string>(new[] { "全国爱眼日" }));
OTHER_FESTIVAL.Add("6-8", new List<string>(new[] { "世界海洋日" }));
OTHER_FESTIVAL.Add("6-11", new List<string>(new[] { "中国人口日" }));
OTHER_FESTIVAL.Add("6-14", new List<string>(new[] { "世界献血日" }));
OTHER_FESTIVAL.Add("7-1", new List<string>(new[] { "香港回归纪念日" }));
OTHER_FESTIVAL.Add("7-7", new List<string>(new[] { "中国人民抗日战争纪念日" }));
OTHER_FESTIVAL.Add("7-11", new List<string>(new[] { "世界人口日" }));
OTHER_FESTIVAL.Add("8-5", new List<string>(new[] { "恩格斯逝世纪念日" }));
OTHER_FESTIVAL.Add("8-6", new List<string>(new[] { "国际电影节" }));
OTHER_FESTIVAL.Add("8-12", new List<string>(new[] { "国际青年日" }));
OTHER_FESTIVAL.Add("8-22", new List<string>(new[] { "邓小平诞辰纪念日" }));
OTHER_FESTIVAL.Add("9-3", new List<string>(new[] { "中国抗日战争胜利纪念日" }));
OTHER_FESTIVAL.Add("9-8", new List<string>(new[] { "世界扫盲日" }));
OTHER_FESTIVAL.Add("9-9", new List<string>(new[] { "毛泽东逝世纪念日" }));
OTHER_FESTIVAL.Add("9-14", new List<string>(new[] { "世界清洁地球日" }));
OTHER_FESTIVAL.Add("9-18", new List<string>(new[] { "九一八事变纪念日" }));
OTHER_FESTIVAL.Add("9-20", new List<string>(new[] { "全国爱牙日" }));
OTHER_FESTIVAL.Add("9-21", new List<string>(new[] { "国际和平日" }));
OTHER_FESTIVAL.Add("9-27", new List<string>(new[] { "世界旅游日" }));
OTHER_FESTIVAL.Add("10-4", new List<string>(new[] { "世界动物日" }));
OTHER_FESTIVAL.Add("10-10", new List<string>(new[] { "辛亥革命纪念日" }));
OTHER_FESTIVAL.Add("10-13", new List<string>(new[] { "中国少年先锋队诞辰日" }));
OTHER_FESTIVAL.Add("10-25", new List<string>(new[] { "抗美援朝纪念日" }));
OTHER_FESTIVAL.Add("11-12", new List<string>(new[] { "孙中山诞辰纪念日" }));
OTHER_FESTIVAL.Add("11-17", new List<string>(new[] { "国际大学生节" }));
OTHER_FESTIVAL.Add("11-28", new List<string>(new[] { "恩格斯诞辰纪念日" }));
OTHER_FESTIVAL.Add("12-1", new List<string>(new[] { "世界艾滋病日" }));
OTHER_FESTIVAL.Add("12-12", new List<string>(new[] { "西安事变纪念日" }));
OTHER_FESTIVAL.Add("12-13", new List<string>(new[] { "国家公祭日" }));
OTHER_FESTIVAL.Add("12-26", new List<string>(new[] { "毛泽东诞辰纪念日" }));
OTHER_FESTIVAL.Add("1-8", new List<string>(new[] {"周恩来逝世纪念日"}));
OTHER_FESTIVAL.Add("1-10", new List<string>(new[] {"中国人民警察节"}));
OTHER_FESTIVAL.Add("1-14", new List<string>(new[] {"日记情人节"}));
OTHER_FESTIVAL.Add("1-21", new List<string>(new[] {"列宁逝世纪念日"}));
OTHER_FESTIVAL.Add("1-26", new List<string>(new[] {"国际海关日"}));
OTHER_FESTIVAL.Add("1-27", new List<string>(new[] {"国际大屠杀纪念日"}));
OTHER_FESTIVAL.Add("2-2", new List<string>(new[] {"世界湿地日"}));
OTHER_FESTIVAL.Add("2-4", new List<string>(new[] {"世界抗癌日"}));
OTHER_FESTIVAL.Add("2-7", new List<string>(new[] {"京汉铁路罢工纪念日"}));
OTHER_FESTIVAL.Add("2-10", new List<string>(new[] {"国际气象节"}));
OTHER_FESTIVAL.Add("2-19", new List<string>(new[] {"邓小平逝世纪念日"}));
OTHER_FESTIVAL.Add("2-20", new List<string>(new[] {"世界社会公正日"}));
OTHER_FESTIVAL.Add("2-21", new List<string>(new[] {"国际母语日"}));
OTHER_FESTIVAL.Add("2-24", new List<string>(new[] {"第三世界青年日"}));
OTHER_FESTIVAL.Add("3-1", new List<string>(new[] {"国际海豹日"}));
OTHER_FESTIVAL.Add("3-3", new List<string>(new[] {"世界野生动植物日", "全国爱耳日"}));
OTHER_FESTIVAL.Add("3-5", new List<string>(new[] {"周恩来诞辰纪念日", "中国青年志愿者服务日"}));
OTHER_FESTIVAL.Add("3-6", new List<string>(new[] {"世界青光眼日"}));
OTHER_FESTIVAL.Add("3-7", new List<string>(new[] {"女生节"}));
OTHER_FESTIVAL.Add("3-12", new List<string>(new[] {"孙中山逝世纪念日"}));
OTHER_FESTIVAL.Add("3-14", new List<string>(new[] {"马克思逝世纪念日", "白色情人节"}));
OTHER_FESTIVAL.Add("3-17", new List<string>(new[] {"国际航海日"}));
OTHER_FESTIVAL.Add("3-18", new List<string>(new[] {"全国科技人才活动日", "全国爱肝日"}));
OTHER_FESTIVAL.Add("3-20", new List<string>(new[] {"国际幸福日"}));
OTHER_FESTIVAL.Add("3-21", new List<string>(new[] {"世界森林日", "世界睡眠日", "国际消除种族歧视日"}));
OTHER_FESTIVAL.Add("3-22", new List<string>(new[] {"世界水日"}));
OTHER_FESTIVAL.Add("3-23", new List<string>(new[] {"世界气象日"}));
OTHER_FESTIVAL.Add("3-24", new List<string>(new[] {"世界防治结核病日"}));
OTHER_FESTIVAL.Add("3-29", new List<string>(new[] {"中国黄花岗七十二烈士殉难纪念日"}));
OTHER_FESTIVAL.Add("4-2", new List<string>(new[] {"国际儿童图书日", "世界自闭症日"}));
OTHER_FESTIVAL.Add("4-4", new List<string>(new[] {"国际地雷行动日"}));
OTHER_FESTIVAL.Add("4-7", new List<string>(new[] {"世界卫生日"}));
OTHER_FESTIVAL.Add("4-8", new List<string>(new[] {"国际珍稀动物保护日"}));
OTHER_FESTIVAL.Add("4-12", new List<string>(new[] {"世界航天日"}));
OTHER_FESTIVAL.Add("4-14", new List<string>(new[] {"黑色情人节"}));
OTHER_FESTIVAL.Add("4-15", new List<string>(new[] {"全民国家安全教育日"}));
OTHER_FESTIVAL.Add("4-22", new List<string>(new[] {"世界地球日", "列宁诞辰纪念日"}));
OTHER_FESTIVAL.Add("4-23", new List<string>(new[] {"世界读书日"}));
OTHER_FESTIVAL.Add("4-24", new List<string>(new[] {"中国航天日"}));
OTHER_FESTIVAL.Add("4-25", new List<string>(new[] {"儿童预防接种宣传日"}));
OTHER_FESTIVAL.Add("4-26", new List<string>(new[] {"世界知识产权日", "全国疟疾日"}));
OTHER_FESTIVAL.Add("4-28", new List<string>(new[] {"世界安全生产与健康日"}));
OTHER_FESTIVAL.Add("4-30", new List<string>(new[] {"全国交通安全反思日"}));
OTHER_FESTIVAL.Add("5-2", new List<string>(new[] {"世界金枪鱼日"}));
OTHER_FESTIVAL.Add("5-3", new List<string>(new[] {"世界新闻自由日"}));
OTHER_FESTIVAL.Add("5-5", new List<string>(new[] {"马克思诞辰纪念日"}));
OTHER_FESTIVAL.Add("5-8", new List<string>(new[] {"世界红十字日"}));
OTHER_FESTIVAL.Add("5-11", new List<string>(new[] {"世界肥胖日"}));
OTHER_FESTIVAL.Add("5-12", new List<string>(new[] {"全国防灾减灾日", "护士节"}));
OTHER_FESTIVAL.Add("5-14", new List<string>(new[] {"玫瑰情人节"}));
OTHER_FESTIVAL.Add("5-15", new List<string>(new[] {"国际家庭日"}));
OTHER_FESTIVAL.Add("5-19", new List<string>(new[] {"中国旅游日"}));
OTHER_FESTIVAL.Add("5-20", new List<string>(new[] {"网络情人节"}));
OTHER_FESTIVAL.Add("5-22", new List<string>(new[] {"国际生物多样性日"}));
OTHER_FESTIVAL.Add("5-25", new List<string>(new[] {"525心理健康节"}));
OTHER_FESTIVAL.Add("5-27", new List<string>(new[] {"上海解放日"}));
OTHER_FESTIVAL.Add("5-29", new List<string>(new[] {"国际维和人员日"}));
OTHER_FESTIVAL.Add("5-30", new List<string>(new[] {"中国五卅运动纪念日"}));
OTHER_FESTIVAL.Add("5-31", new List<string>(new[] {"世界无烟日"}));
OTHER_FESTIVAL.Add("6-3", new List<string>(new[] {"世界自行车日"}));
OTHER_FESTIVAL.Add("6-5", new List<string>(new[] {"世界环境日"}));
OTHER_FESTIVAL.Add("6-6", new List<string>(new[] {"全国爱眼日"}));
OTHER_FESTIVAL.Add("6-8", new List<string>(new[] {"世界海洋日"}));
OTHER_FESTIVAL.Add("6-11", new List<string>(new[] {"中国人口日"}));
OTHER_FESTIVAL.Add("6-14", new List<string>(new[] {"世界献血日", "亲亲情人节"}));
OTHER_FESTIVAL.Add("6-17", new List<string>(new[] {"世界防治荒漠化与干旱日"}));
OTHER_FESTIVAL.Add("6-20", new List<string>(new[] {"世界难民日"}));
OTHER_FESTIVAL.Add("6-21", new List<string>(new[] {"国际瑜伽日"}));
OTHER_FESTIVAL.Add("6-25", new List<string>(new[] {"全国土地日"}));
OTHER_FESTIVAL.Add("6-26", new List<string>(new[] {"国际禁毒日", "联合国宪章日"}));
OTHER_FESTIVAL.Add("7-1", new List<string>(new[] {"香港回归纪念日"}));
OTHER_FESTIVAL.Add("7-6", new List<string>(new[] {"国际接吻日", "朱德逝世纪念日"}));
OTHER_FESTIVAL.Add("7-7", new List<string>(new[] {"七七事变纪念日"}));
OTHER_FESTIVAL.Add("7-11", new List<string>(new[] {"世界人口日", "中国航海日"}));
OTHER_FESTIVAL.Add("7-14", new List<string>(new[] {"银色情人节"}));
OTHER_FESTIVAL.Add("7-18", new List<string>(new[] {"曼德拉国际日"}));
OTHER_FESTIVAL.Add("7-30", new List<string>(new[] {"国际友谊日"}));
OTHER_FESTIVAL.Add("8-3", new List<string>(new[] {"男人节"}));
OTHER_FESTIVAL.Add("8-5", new List<string>(new[] {"恩格斯逝世纪念日"}));
OTHER_FESTIVAL.Add("8-6", new List<string>(new[] {"国际电影节"}));
OTHER_FESTIVAL.Add("8-8", new List<string>(new[] {"全民健身日"}));
OTHER_FESTIVAL.Add("8-9", new List<string>(new[] {"国际土著人日"}));
OTHER_FESTIVAL.Add("8-12", new List<string>(new[] {"国际青年节"}));
OTHER_FESTIVAL.Add("8-14", new List<string>(new[] {"绿色情人节"}));
OTHER_FESTIVAL.Add("8-19", new List<string>(new[] {"世界人道主义日", "中国医师节"}));
OTHER_FESTIVAL.Add("8-22", new List<string>(new[] {"邓小平诞辰纪念日"}));
OTHER_FESTIVAL.Add("8-29", new List<string>(new[] {"全国测绘法宣传日"}));
OTHER_FESTIVAL.Add("9-3", new List<string>(new[] {"中国抗日战争胜利纪念日"}));
OTHER_FESTIVAL.Add("9-5", new List<string>(new[] {"中华慈善日"}));
OTHER_FESTIVAL.Add("9-8", new List<string>(new[] {"世界扫盲日"}));
OTHER_FESTIVAL.Add("9-9", new List<string>(new[] {"毛泽东逝世纪念日", "全国拒绝酒驾日"}));
OTHER_FESTIVAL.Add("9-14", new List<string>(new[] {"世界清洁地球日", "相片情人节"}));
OTHER_FESTIVAL.Add("9-15", new List<string>(new[] {"国际民主日"}));
OTHER_FESTIVAL.Add("9-16", new List<string>(new[] {"国际臭氧层保护日"}));
OTHER_FESTIVAL.Add("9-17", new List<string>(new[] {"世界骑行日"}));
OTHER_FESTIVAL.Add("9-18", new List<string>(new[] {"九一八事变纪念日"}));
OTHER_FESTIVAL.Add("9-20", new List<string>(new[] {"全国爱牙日"}));
OTHER_FESTIVAL.Add("9-21", new List<string>(new[] {"国际和平日"}));
OTHER_FESTIVAL.Add("9-27", new List<string>(new[] {"世界旅游日"}));
OTHER_FESTIVAL.Add("9-30", new List<string>(new[] {"中国烈士纪念日"}));
OTHER_FESTIVAL.Add("10-1", new List<string>(new[] {"国际老年人日"}));
OTHER_FESTIVAL.Add("10-2", new List<string>(new[] {"国际非暴力日"}));
OTHER_FESTIVAL.Add("10-4", new List<string>(new[] {"世界动物日"}));
OTHER_FESTIVAL.Add("10-11", new List<string>(new[] {"国际女童日"}));
OTHER_FESTIVAL.Add("10-10", new List<string>(new[] {"辛亥革命纪念日"}));
OTHER_FESTIVAL.Add("10-13", new List<string>(new[] {"国际减轻自然灾害日", "中国少年先锋队诞辰日"}));
OTHER_FESTIVAL.Add("10-14", new List<string>(new[] {"葡萄酒情人节"}));
OTHER_FESTIVAL.Add("10-16", new List<string>(new[] {"世界粮食日"}));
OTHER_FESTIVAL.Add("10-17", new List<string>(new[] {"全国扶贫日"}));
OTHER_FESTIVAL.Add("10-20", new List<string>(new[] {"世界统计日"}));
OTHER_FESTIVAL.Add("10-24", new List<string>(new[] {"世界发展信息日", "程序员节"}));
OTHER_FESTIVAL.Add("10-25", new List<string>(new[] {"抗美援朝纪念日"}));
OTHER_FESTIVAL.Add("11-5", new List<string>(new[] {"世界海啸日"}));
OTHER_FESTIVAL.Add("11-8", new List<string>(new[] {"记者节"}));
OTHER_FESTIVAL.Add("11-9", new List<string>(new[] {"全国消防日"}));
OTHER_FESTIVAL.Add("11-11", new List<string>(new[] {"光棍节"}));
OTHER_FESTIVAL.Add("11-12", new List<string>(new[] {"孙中山诞辰纪念日"}));
OTHER_FESTIVAL.Add("11-14", new List<string>(new[] {"电影情人节"}));
OTHER_FESTIVAL.Add("11-16", new List<string>(new[] {"国际宽容日"}));
OTHER_FESTIVAL.Add("11-17", new List<string>(new[] {"国际大学生节"}));
OTHER_FESTIVAL.Add("11-19", new List<string>(new[] {"世界厕所日"}));
OTHER_FESTIVAL.Add("11-28", new List<string>(new[] {"恩格斯诞辰纪念日"}));
OTHER_FESTIVAL.Add("11-29", new List<string>(new[] {"国际声援巴勒斯坦人民日"}));
OTHER_FESTIVAL.Add("12-1", new List<string>(new[] {"世界艾滋病日"}));
OTHER_FESTIVAL.Add("12-2", new List<string>(new[] {"全国交通安全日"}));
OTHER_FESTIVAL.Add("12-3", new List<string>(new[] {"世界残疾人日"}));
OTHER_FESTIVAL.Add("12-4", new List<string>(new[] {"全国法制宣传日"}));
OTHER_FESTIVAL.Add("12-5", new List<string>(new[] {"世界弱能人士日", "国际志愿人员日"}));
OTHER_FESTIVAL.Add("12-7", new List<string>(new[] {"国际民航日"}));
OTHER_FESTIVAL.Add("12-9", new List<string>(new[] {"世界足球日", "国际反腐败日"}));
OTHER_FESTIVAL.Add("12-10", new List<string>(new[] {"世界人权日"}));
OTHER_FESTIVAL.Add("12-11", new List<string>(new[] {"国际山岳日"}));
OTHER_FESTIVAL.Add("12-12", new List<string>(new[] {"西安事变纪念日"}));
OTHER_FESTIVAL.Add("12-13", new List<string>(new[] {"国家公祭日"}));
OTHER_FESTIVAL.Add("12-14", new List<string>(new[] {"拥抱情人节"}));
OTHER_FESTIVAL.Add("12-18", new List<string>(new[] {"国际移徙者日"}));
OTHER_FESTIVAL.Add("12-26", new List<string>(new[] {"毛泽东诞辰纪念日"}));
}
/// <summary>

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
using Lunar;
using Xunit;
// ReSharper disable IdentifierTypo
@@ -27,5 +28,16 @@ namespace test
Assert.Equal("东", foto.Gong);
Assert.Equal("青龙", foto.Shou);
}
[Fact]
public void Test3()
{
var foto = Foto.FromLunar(Lunar.Lunar.FromYmdHms(2021, 3, 16));
var expected = new List<string>
{
"准提菩萨圣诞"
};
Assert.Equal(expected, foto.OtherFestivals);
}
}
}

61
test/LunarMonthTest.cs Normal file
View File

@@ -0,0 +1,61 @@
using Lunar;
using Xunit;
// ReSharper disable IdentifierTypo
namespace test
{
/// <summary>
/// 佛历
/// </summary>
public class LunarMonthTest
{
[Fact]
public void Test1()
{
var month = LunarMonth.FromYm(2023, 1);
Assert.Equal(1, month.Index);
Assert.Equal("甲寅", month.GanZhi);
}
[Fact]
public void Test2()
{
var month = LunarMonth.FromYm(2023, -2);
Assert.Equal(3, month.Index);
Assert.Equal("丙辰", month.GanZhi);
}
[Fact]
public void Test3()
{
var month = LunarMonth.FromYm(2023, 3);
Assert.Equal(4, month.Index);
Assert.Equal("丁巳", month.GanZhi);
}
[Fact]
public void Test4()
{
var month = LunarMonth.FromYm(2024, 1);
Assert.Equal(1, month.Index);
Assert.Equal("丙寅", month.GanZhi);
}
[Fact]
public void Test5()
{
var month = LunarMonth.FromYm(2023, 12);
Assert.Equal(13, month.Index);
Assert.Equal("丙寅", month.GanZhi);
}
[Fact]
public void Test6()
{
var month = LunarMonth.FromYm(2022, 1);
Assert.Equal(1, month.Index);
Assert.Equal("壬寅", month.GanZhi);
}
}
}