You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.7 KiB
C#
71 lines
2.7 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using POSV.Calendar;
|
|
|
|
namespace POSV.Calendar
|
|
{
|
|
internal class Program
|
|
{
|
|
private static readonly ChineseLunisolarCalendar cnCalendar = new ChineseLunisolarCalendar();
|
|
|
|
public static Lunar DateTimeToLunar(DateTime solar)
|
|
{
|
|
try
|
|
{
|
|
var ld = new Lunar();
|
|
ld.lunarYear = cnCalendar.GetYear(solar);
|
|
ld.lunarMonth = cnCalendar.GetMonth(solar);
|
|
ld.lunarDay = cnCalendar.GetDayOfMonth(solar);
|
|
if ((cnCalendar.GetLeapMonth(ld.lunarYear) > 0 && cnCalendar.GetLeapMonth(ld.lunarYear) <= ld.lunarMonth))
|
|
{
|
|
if (cnCalendar.IsLeapMonth(ld.lunarYear, ld.lunarMonth))
|
|
ld.isleap = true;
|
|
ld.lunarMonth -= 1;
|
|
}
|
|
return ld;
|
|
}
|
|
catch
|
|
{
|
|
return new Lunar();
|
|
}
|
|
}
|
|
|
|
public static void Verify()
|
|
{
|
|
DateTime endDt = cnCalendar.MaxSupportedDateTime;
|
|
for (DateTime dt = cnCalendar.MinSupportedDateTime; dt < endDt; dt = dt.AddDays(1))
|
|
{
|
|
Lunar ld =
|
|
LunarSolarConverter.SolarToLunar(new Solar
|
|
{
|
|
solarYear = dt.Year,
|
|
solarMonth = dt.Month,
|
|
solarDay = dt.Day
|
|
});
|
|
Lunar ld2 = DateTimeToLunar(dt);
|
|
Solar sd = LunarSolarConverter.LunarToSolar(ld2);
|
|
if (ld.lunarYear != ld2.lunarYear || ld.lunarMonth != ld2.lunarMonth || ld.lunarDay != ld2.lunarDay ||
|
|
ld.isleap != ld2.isleap)
|
|
{
|
|
Console.WriteLine("----" + dt.Year + "/" + dt.Month + "/" + dt.Day);
|
|
Console.WriteLine("ms----" + ld2.lunarYear + "/" + ld2.lunarMonth + "/" + ld2.lunarDay + "/" +
|
|
ld2.isleap);
|
|
Console.WriteLine("ld----" + ld.lunarYear + "/" + ld.lunarMonth + "/" + ld.lunarDay + "/" +
|
|
ld.isleap);
|
|
}
|
|
if (sd.solarYear != dt.Year || sd.solarMonth != dt.Month || sd.solarDay != dt.Day)
|
|
{
|
|
Console.WriteLine("----" + dt.Year + "/" + dt.Month + "/" + dt.Day);
|
|
Console.WriteLine("sd----" + sd.solarYear + "/" + sd.solarMonth + "/" + sd.solarDay);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void Main(string[] args)
|
|
{
|
|
Verify();
|
|
Console.WriteLine("Verify Done---------------------------------------");
|
|
Console.Read();
|
|
}
|
|
}
|
|
} |