以下是我经过 一个多星期,摸索出来,考虑的也比较全面的 生日提醒代码,因为生日提醒涉及到 有的是公历,有的农历,还有2月29日 出生,日期处理

总的思路

一.把农历转成公历

二.再分别对待公历生日,农历生日处理。

protected void TongYi()
    {

DataSet MyDataSet = DBUtility.DbHelperSQL.GetDataSet("select * from ERPUser where  DATEDIFF ( DAY , GETDATE() , TongYi )<0    and  ZaiGang='在岗'  ");

for (int j = 0; j < MyDataSet.Tables[0].Rows.Count; j++)
        {

BLL.ERPUser MyModel = new BLL.ERPUser();

MyModel.ID = int.Parse(MyDataSet.Tables[0].Rows[j]["ID"].ToString());

if (MyDataSet.Tables[0].Rows[j]["PanDuan"].ToString() == "公历")
            {
                #region 公历生日

string gonglitongyi = "2014-5-12";
                DateTime dt2 = Convert.ToDateTime(MyDataSet.Tables[0].Rows[j]["BirthDay"].ToString());
                int pox = toResult(MyDataSet.Tables[0].Rows[j]["BirthDay"].ToString());

if (pox <= 0)
                {
                    #region
                    if ((dt2.Month == 2) && (dt2.Day == 29))
                    {

gonglitongyi = DateTime.Now.Year.ToString() + "-" + dt2.Month.ToString() + "-" + "28";

}
                    else
                    {

gonglitongyi = DateTime.Now.Year.ToString() + "-" + dt2.Month.ToString() + "-" + dt2.Day.ToString();

}

#endregion

}
                else
                {

#region
                    if ((dt2.Month == 2) && (dt2.Day == 29))
                    {

gonglitongyi = (Convert.ToInt32(DateTime.Now.Year.ToString()) + 1).ToString() + "-" + dt2.Month.ToString() + "-" + "28";

}
                    else
                    {

gonglitongyi = (Convert.ToInt32(DateTime.Now.Year.ToString()) + 1).ToString() + "-" + dt2.Month.ToString() + "-" + dt2.Day.ToString();

}
                    #endregion

}

MyModel.TongYi = gonglitongyi;
                MyModel.NianDai = DateTime.Now.Year.ToString();

#endregion

}
            else if (MyDataSet.Tables[0].Rows[j]["PanDuan"].ToString() == "农历")
            {
                #region

string riqi = MyDataSet.Tables[0].Rows[j]["NongLi"].ToString();
                string moy = "9-18";
                string[] arr = riqi.Split('-');
                if (arr.Length.ToString() == "3")
                {

moy = arr[1] + "-" + arr[2];

}
                arr = null;

ChineseLunisolarCalendar ChineseCalendar = new ChineseLunisolarCalendar();
                int niandai = Convert.ToInt32(DateTime.Now.Year.ToString());
                string biaozhun = ChineseCalendar.GetYear(DateTime.Now).ToString();//取农历年
                string vtx2 = biaozhun + "-" + moy.ToString();
                DateTime dt2 = Convert.ToDateTime(vtx2);
                string sss = calendarChineseLunisolarToSolar(dt2).ToString();
                int result = toResult2(sss);
                if (result < 0)
                {

biaozhun = (ChineseCalendar.GetYear(DateTime.Now) + 1).ToString();

}
                else
                {

biaozhun = ChineseCalendar.GetYear(DateTime.Now).ToString(); //取农历年

}
                string vtx3 = biaozhun + "-" + moy.ToString();
                DateTime dt3 = Convert.ToDateTime(vtx3);
                string tongyidate = calendarChineseLunisolarToSolar(dt3).Year.ToString() + "-" + calendarChineseLunisolarToSolar(dt3).Month.ToString() + "-" + calendarChineseLunisolarToSolar(dt3).Day.ToString();
                MyModel.TongYi = tongyidate;
                MyModel.NianDai = DateTime.Now.Year.ToString();

#endregion

}

MyModel.Update2();

}
    }

public int toResult(string d2)
    {
        string joinDate1 = "";

DateTime dt2 = Convert.ToDateTime(d2);

if ((dt2.Month == 2) && (dt2.Day == 29))
        {

joinDate1 = (DateTime.Now.Year.ToString() + "-" + dt2.Month.ToString() + "-" + "28");

}
        else
        {

joinDate1 = (DateTime.Now.Year.ToString() + "-" + dt2.Month.ToString() + "-" + dt2.Day.ToString());

}

DateTime joinDate = Convert.ToDateTime(joinDate1);

TimeSpan ts = DateTime.Now - joinDate;

return ts.Days;
    }

public int toResult2(string d2)
    {
        DateTime joinDate = Convert.ToDateTime(d2);

TimeSpan ts = joinDate - DateTime.Now;

return ts.Days;
    }

/// <summary>
    /// 将  农历(阴历)   转换为   公历(阳历,西历)
    ///    如果传入的参数中的年份是润年,需要另外进行加上润月的天数,简单测试,但没有做过多的测试,不知是否完全正确
    ///
    ///    DateTime dt = Convert.ToDateTime("2010-05-21 00:00:00");
    ///    MessageBox.Show(calendarChineseLunisolarToSolar(dt).ToString());
    ///   
    /// </summary>
    ///
    public static DateTime calendarChineseLunisolarToSolar(DateTime ChineseLunisolarDateTime)
    {
        System.Globalization.ChineseLunisolarCalendar cal = new System.Globalization.ChineseLunisolarCalendar();

if (ChineseLunisolarDateTime.Year < 1902 || ChineseLunisolarDateTime.Year > 2100)
            throw new Exception("只支持1902~2100期间的农历年");

DateTime dt = cal.ToDateTime(ChineseLunisolarDateTime.Year, ChineseLunisolarDateTime.Month, ChineseLunisolarDateTime.Day, 0, 0, 0, 0);

//检测是否含有润月
        int leapMonth = cal.GetLeapMonth(ChineseLunisolarDateTime.Year);

int leapMonthInDays = 0;

if ((leapMonth > 0) & (leapMonth <= ChineseLunisolarDateTime.Month))
        // if (leapMonth > 0 & ChineseLunisolarDateTime.Month > leapMonth)
        {
            //有润月,则读到这个润月里面的天数
            leapMonthInDays = cal.GetDaysInMonth(ChineseLunisolarDateTime.Year, ChineseLunisolarDateTime.Month);
        }

dt = dt.AddDays(leapMonthInDays);

return dt;
    }

转载于:https://www.cnblogs.com/cgfree/p/4318671.html

C#处理生日提醒功能,最全面代码。相关推荐

  1. .net里鼠标选中的text数据怎么获取_怎么利用Excel设置当天生日提醒功能

    怎么设置当天生日提醒功能?本期技巧妹与大家分享相关的处理方法. 1.利用TEXT函数 在单元格中输入公式输入公式=--TEXT(F2,"m-d"),利用EXT(F2,"m ...

  2. python生日提醒_Python实现农历生日提醒功能

    前言: 某天突发奇想,想要实现一个农历生日提醒.这个时候有了如下的大概思路: 获取农历   ――>    匹配    ――>     提醒 发现实现这个需求最主要的在获取农历这一块,后边两 ...

  3. python实现秒杀商品的微信自动提醒功能(附代码)

    技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒 1.收集自己想要的商品url 我们就以京东来举例,获取京东的秒杀商品信息: 首先,我们在网页上打开京东,搜索我们想要的商品,这边我就以我 ...

  4. Android+Jquery Mobile学习系列(8)-保单/生日提醒功能

    其实这个App基本功能早已做完,并且交给老婆试用去了.但由于最近项目要保证稳定,所以持续加班,没有时间写最后一点内容,本节也就简单截图做个说明,不详细叙述实现方式.我会把代码上传到最后一章中,有兴趣的 ...

  5. python股票交易微信提醒_python实现秒杀商品的微信自动提醒功能(附代码)

    技术实现原理:获取京东的具体的商品信息,然后再使用微信发送提醒 工具:需要两个微信号,这两个微信号互为好友 如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的 ...

  6. java生日提醒_生日提醒功能-SQL查询语句在Java中肿么运用?

    你再研究一下datadiff方法使用情况 DateDiff DateDiff: SQL server函数 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目. 语法: Date ...

  7. php新订单提醒代码,PHP怎么实现新订单提醒功能

    PHP实现新订单提醒功能的方法:首先实现ajax轮询:然后下载workerman:接着连接服务端,代码为"var socket = io('http://www.tp5_test.com:2 ...

  8. java 手机声音提醒功能_Android基于广播事件机制实现简单定时提醒功能代码

    本文实例讲述了Android基于广播事件机制实现简单定时提醒功能代码.分享给大家供大家参考,具体如下: 1.Android广播事件机制 Android的广播事件处理类似于普通的事件处理.不同之处在于, ...

  9. python微信红包代码_Python实现的微信红包提醒功能示例

    本文实例讲述了Python实现的微信红包提醒功能.分享给大家供大家参考,具体如下: #coding=utf-8 import itchat from itchat.content import TEX ...

最新文章

  1. css 倒三角_倒三角结构:如何管理大型CSS项目
  2. Windows禁止启动某个程序!偷偷禁止,别人就打不开。。。比如,微信 LOL 吃鸡 爱奇艺
  3. 深入理解编译注解(四)常用接口介绍
  4. kali2020进入单模式_2021神途手游:超级变态单职业
  5. pop3服务器协议初始化失败,Exchange2003系统管理器中的默认POP3 虚拟服务器无法自动启动...
  6. C# 对Ini文件操作(C# ini文件操作类)
  7. RabbitMQ(四) Work模式下的消息产生以及消费代码实现示例
  8. NTP反射放大***分析
  9. 计算机ps图片在哪里看,如何在Photoshop中查看照片的EXIF信息如何删除照片的exif信息...
  10. NRF52840开发注意
  11. Android JNI的调用过程
  12. 大龄程序员的成长之路
  13. 第六届”蓝帽杯“全国大学生网络安全技能大赛WriteUp
  14. vob格式的视频怎么无损转换成mp4格式
  15. OPC UA JAVA开发笔记(四):数据写入
  16. 如何在虚拟机安装的Win10系统里快速打开【此电脑】图标?(图文详解)
  17. [生而为人-思考] Knowledge Cooking 分享会记录 -1
  18. vue实现静音播放video标签(视频/视频流)
  19. 选下拉框的的值对应上传相应的图片_excel表格下拉菜单调用对应数据,如何在excel中实现,选择下拉菜单某一项,该表格中就出现选项对应的数据?...
  20. mini-MBA学习总结一:建设高效团队和决策与执行

热门文章

  1. 【session】Java电商平台开发技能图谱,探秘双十一百万PV
  2. 为了响应工信部要求,我们整理了这些网络账户注销指南
  3. [Linux 高并发服务器]网络基础
  4. 基于深度学习的大规模vSLAM场景中的鲁棒视觉位置识别
  5. 如何快速设计业务架构?
  6. mysql格式化查询结果
  7. 李宏毅《深度学习》(一)
  8. HDU4343[Interval query]--倍增思想+二分+离散
  9. 美团动态线程池实践思路已开源
  10. java为什么不能输入钢筋符号_搜狗输入法钢筋符号咋样输入?