v1.5.7 修复星期错误的问题;修正逐日胎神数据。

This commit is contained in:
6tail
2023-11-09 08:17:34 +08:00
parent 1949a785f8
commit 0a51b03c7e
7 changed files with 77 additions and 47 deletions

View File

@@ -2121,14 +2121,7 @@ namespace Lunar
start = start.Next(10);
days = current.Subtract(start);
var liQiuSolar = new Solar(liQiu.Year, liQiu.Month, liQiu.Day);
if (!liQiuSolar.IsAfter(start))
{
if (days < 10)
{
return new Fu("末伏", days + 1);
}
}
else
if (liQiuSolar.IsAfter(start))
{
if (days < 10)
{
@@ -2136,10 +2129,10 @@ namespace Lunar
}
start = start.Next(10);
days = current.Subtract(start);
if (days < 10)
{
return new Fu("末伏", days + 1);
}
}
if (days < 10)
{
return new Fu("末伏", days + 1);
}
return null;
}

View File

@@ -293,32 +293,7 @@ namespace Lunar
/// <summary>
/// 星期0代表周日1代表周一
/// </summary>
public int Week
{
get
{
var start = new Solar(1582, 10, 15);
var y = Year;
var m = Month;
var d = Day;
var current = new Solar(y, m, d);
// 蔡勒公式
if (m < 3) {
m += 12;
y--;
}
var c = y / 100;
y = y - c * 100;
var x = y + y / 4 + c / 4 - 2 * c;
int w;
if (current.IsBefore(start)) {
w = (x + 13 * (m + 1) / 5 + d + 2) % 7;
} else {
w = (x + 26 * (m + 1) / 10 + d - 1) % 7;
}
return (w + 7) % 7;
}
}
public int Week => ((int)(JulianDay + 0.5) + 7000001) % 7;
/// <summary>
/// 星期的中文:日一二三四五六

View File

@@ -6,7 +6,7 @@
<RootNamespace>Lunar</RootNamespace>
<GenerateDocumentationFile>True</GenerateDocumentationFile>
<PackageId>lunar-csharp</PackageId>
<PackageVersion>1.5.6</PackageVersion>
<PackageVersion>1.5.7</PackageVersion>
<Title>无依赖的阳历、阴历、道历和佛历工具库</Title>
<Authors>6tail</Authors>
<Description>日历、公历(阳历)、农历(阴历、老黄历)、佛历、道历,节假日、星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶等。</Description>
@@ -16,9 +16,9 @@
<RepositoryType>git</RepositoryType>
<PackageTags>日历;公历;阳历;农历;阴历;老黄历;佛历;道历;法定假日</PackageTags>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<AssemblyVersion>1.5.6</AssemblyVersion>
<FileVersion>1.5.6</FileVersion>
<PackageReleaseNotes>更新2024年法定假日数据十神优化</PackageReleaseNotes>
<AssemblyVersion>1.5.7</AssemblyVersion>
<FileVersion>1.5.7</FileVersion>
<PackageReleaseNotes>修复星期错误的问题;修正逐日胎神数据</PackageReleaseNotes>
<PackageIcon>https://raw.githubusercontent.com/6tail/lunar-csharp/master/lunar.png</PackageIcon>
<PackageLicenseUrl>https://raw.githubusercontent.com/6tail/lunar-csharp/master/LICENSE</PackageLicenseUrl>
</PropertyGroup>

View File

@@ -49,7 +49,7 @@ namespace Lunar.Util
public static readonly string[] GAN = {"", "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};
/// <summary>
/// 喜神方位,《喜神方位歌》:甲己在艮乙庚乾,丙辛坤位喜神安.丁壬只在离宫坐,戊癸原在在巽间。
/// 喜神方位,《喜神方位歌》:甲己在艮乙庚乾,丙辛坤位喜神安丁壬只在离宫坐,戊癸原在在巽间。
/// </summary>
public static readonly string[] POSITION_XI = {"", "艮", "乾", "坤", "离", "巽", "艮", "乾", "坤", "离", "巽"};
@@ -74,14 +74,22 @@ namespace Lunar.Util
public static readonly string[] POSITION_FU_2 = {"", "坎", "坤", "乾", "巽", "艮", "坎", "坤", "乾", "巽", "艮"};
/// <summary>
/// 财神方位,《财神方位歌》:甲乙东北是财神,丙丁向在西南寻,戊己正北坐方位,庚辛正东去安身,壬癸原来正南坐,便是财神方位真。
/// 财神方位,《财神方位歌》:甲乙东北是财神,丙丁向在西南寻,戊己正北坐方位,庚辛正东去安身,壬癸原来正南坐,便是财神方位真。
/// </summary>
public static readonly string[] POSITION_CAI = {"", "艮", "艮", "坤", "坤", "坎", "坎", "震", "震", "离", "离"};
/// <summary>
/// 逐日胎神方位
/// </summary>
public static readonly string[] POSITION_TAI_DAY = {"占门碓 外东南", "碓磨厕 外东南", "厨灶炉 外正南", "仓库门 外正南", "房床栖 外正南", "占门床 外正南", "占碓磨 外正南", "厕灶厨 外西南", "仓库炉 外西南", "房床门 外西南", "门碓栖 外西南", "碓磨床 外西南", "厨灶碓 外西南", "仓库厕 外正西", "房床炉 外正西", "占大门 外正西", "碓磨栖 外正西", "厨房床 外正西", "仓库碓 外西北", "房床厕 外西北", "占门炉 外西北", "门碓磨 外西北", "厨灶栖 外西北", "仓库床 外西北", "房床碓 外正北", "占门厕 外正北", "碓磨炉 外正北", "厨灶门 外正北", "仓库栖 外正北", "占房床 房内北", "占门碓 房内北", "碓磨厕 房内北", "厨灶炉 房内北", "门仓库 房内北", "床房栖 房内中", "占门床 房内中", "占碓磨 房内南", "厨磨厕 房内南", "仓库炉 房内南", "房床门 房内西", "门碓栖 房内东", "碓磨床 房内东", "厨灶碓 房内东", "仓库厕 房内东", "房床炉 房内中", "占大门 外东北", "碓磨栖 外东北", "厨灶床 外东北", "仓库碓 外东北", "房床厕 外东北", "占门炉 外东北", "门碓磨 外正东", "厨灶栖 外正东", "仓库床 外正东", "房床碓 外正东", "占门厕 外正东", "碓磨炉 外东南", "厨灶门 外东南", "仓库栖 外东南", "占房床 外东南"};
public static readonly string[] POSITION_TAI_DAY =
{
"占门碓 外东南", "碓磨厕 外东南", "厨灶炉 外正南", "仓库门 外正南", "房床栖 外正南", "占门床 外正南", "占碓磨 外正南", "厨灶厕 外西南", "仓库炉 外西南", "房床门 外西南",
"占门栖 外西南", "碓磨床 外西南", "厨灶碓 外西南", "仓库厕 外正西", "房床炉 外正西", "占大门 外正西", "碓磨栖 外正西", "厨灶床 外正西", "仓库碓 外西北", "房床厕 外西北",
"占门炉 外西北", "碓磨门 外西北", "厨灶栖 外西北", "仓库床 外西北", "房床碓 外正北", "占门厕 外正北", "碓磨炉 外正北", "厨灶门 外正北", "仓库栖 外正北", "占房床 房内北",
"占门碓 房内北", "碓磨厕 房内北", "厨灶炉 房内北", "仓库门 房内北", "床房栖 房内中", "占门床 房内中", "占碓磨 房内南", "厨灶厕 房内南", "仓库炉 房内南", "房床门 房内西",
"占门栖 房内东", "碓磨床 房内东", "厨灶碓 房内东", "仓库厕 房内东", "房床炉 房内中", "占大门 外东北", "碓磨栖 外东北", "厨灶床 外东北", "仓库碓 外东北", "房床厕 外东北",
"占门炉 外东北", "碓磨门 外正东", "厨灶栖 外正东", "仓库床 外正东", "房床碓 外正东", "占门厕 外正东", "碓磨炉 外东南", "厨灶门 外东南", "仓库栖 外东南", "占房床 外东南"
};
/// <summary>
/// 逐月胎神方位

View File

@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Lunar;
using Lunar.EightChar;
using Xunit;
using Xunit.Abstractions;
// ReSharper disable IdentifierTypo
namespace test
@@ -12,7 +15,13 @@ namespace test
/// </summary>
public class EightCharTest
{
private readonly ITestOutputHelper _testOutputHelper;
public EightCharTest(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
}
[Fact]
public void TestQiYun()
{
@@ -245,6 +254,7 @@ namespace test
string[] solarList = { "2021-09-15 20:00:00 星期三 处女座", "1961-09-30 20:00:00 星期六 天秤座" };
for (int i = 0, j = solarList.Length; i < j; i++)
{
_testOutputHelper.WriteLine(l[i].JulianDay.ToString());
Assert.Equal(solarList[i], l[i].FullString);
}
}

View File

@@ -485,7 +485,7 @@ namespace test
{
var solar = Solar.FromYmdHms(2011, 11, 12);
var lunar = solar.Lunar;
Assert.Equal("厕灶厨 外西南", lunar.DayPositionTai);
Assert.Equal("厨灶厕 外西南", lunar.DayPositionTai);
}
[Fact]

View File

@@ -36,5 +36,49 @@ namespace test
var solar = Solar.FromYmdHms(1582, 10, 15);
Assert.Equal(5, solar.Week);
}
[Fact]
public void Test5()
{
Assert.Equal(0, Solar.FromYmdHms(1129, 11, 17).Week);
}
[Fact]
public void Test6()
{
Assert.Equal(5, Solar.FromYmdHms(1129, 11, 1).Week);
}
[Fact]
public void Test7()
{
Assert.Equal(4, Solar.FromYmdHms(8, 11, 1).Week);
}
[Fact]
public void Test8()
{
Assert.Equal(0, Solar.FromYmdHms(1582, 9, 30).Week);
}
[Fact]
public void Test9()
{
Assert.Equal(1, Solar.FromYmdHms(1582, 1, 1).Week);
}
[Fact]
public void Test10()
{
Assert.Equal(6, Solar.FromYmdHms(1500, 2, 29).Week);
Assert.Equal(6, Solar.FromYmdHms(1500, 2, 29, 23, 59, 59).Week);
}
[Fact]
public void Test11()
{
Assert.Equal(3, Solar.FromYmdHms(9865, 7, 26).Week);
Assert.Equal(3, Solar.FromYmdHms(9865, 7, 26, 23, 59, 59).Week);
}
}
}