爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 9643|回复: 0
收起左侧

节气算法(已经过验证)-大家顶上去,直到llhn大侠关注

[复制链接]
发表于 2005-8-7 00:00:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
今天抽了一点时间,写了以下计算节气的算法,2005年的节气均验证过,正确无误
大家顶上去,直到llhn大侠关注

/// <summary>
/// C#源代码:根据阳历日期,计算节气,返回节气名称
/// </summary>
/// <param name="day">阳历日期</param>
/// <returns>节气名称</returns>
public static string GetSolarTerm(System.DateTime day)
{
        //节气名称数组
        string[] TermName = new string[]
                {
                        "小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至",
                        "小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"
                };
        //各节气和小寒相差的分钟数(因为只有分钟的数据,所以仅精确到分钟)
        int[] TermOffsetInMinute = new int[]
                {
                        0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,
                        263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758
                };
        //一个节气年的毫秒长度
        double TermYearLengthInMS = 31556925974.7;
        //基准节气时刻(1900年小寒)
        System.DateTime BasicTerm = System.DateTime.Parse("1900-01-06 02:05:00");

        //计算今年小寒所在的日期
        System.DateTime CurrentTerm0 = BasicTerm.AddMilliseconds( TermYearLengthInMS * ( day.Year - 1900 ) );
        //计算当前日期和小寒日期相差的分钟数
        System.TimeSpan dayMinute = day - CurrentTerm0;
        double dayMinuteFrom = dayMinute.TotalMinutes;
        double dayMinuteTo = dayMinuteFrom + 60 * 24;

        //遍历每个节气,找出在当前日期24小时范围内的节气
        for (int i=0;i<TermName.Length;i++)
        {
                if ( dayMinuteFrom <= TermOffsetInMinute[i] && dayMinuteTo > TermOffsetInMinute[i] )
                {
                        //找到节气,返回节气名称
                        return TermName[i];
                }
        }
        //找不到节气,说明当前日期并非节气日
        return "";
}
您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2025-6-4 00:13

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表