http://ilewen.com/questions/3480

如下:

反对

使用

static ChineseLunisolarCalendar cCalendar = new ChineseLunisolarCalendar();
cCalendar.MaxSupportedDateTime 返回支持的最大日期,即2101-1-28
cCalendar.MinSupportedDateTime  返回支持的最小日期,即1901-2-19

下面我们来实现公历转农历。

/// <summary>
/// 根据公历获取农历日期
/// </summary>
/// <param name="datetime">公历日期</param>
/// <returns></returns>
public static string GetChineseDateTime(DateTime datetime)
{int lyear = cCalendar.GetYear(datetime);int lmonth = cCalendar.GetMonth(datetime);int lday = cCalendar.GetDayOfMonth(datetime);//获取闰月, 0 则表示没有闰月int leapMonth = cCalendar.GetLeapMonth(lyear);bool isleap = false;if (leapMonth > 0){if (leapMonth == lmonth){//闰月isleap = true;lmonth--;}else if (lmonth > leapMonth){lmonth--;}}return string.Concat(GetLunisolarYear(datetime.Year), "年", isleap ? "闰" : string.Empty, GetLunisolarMonth(lmonth), "月", GetLunisolarDay(lday));
}

测试的结果:

传入日期:2010-3-4

返回农历:庚寅[虎]年正月十九

可以满足简单的需求啦。

其他代码也附上:

region 农历年

/// <summary>
/// 十天干
/// </summary>
private static string[] tiangan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };/// <summary>
/// 十二地支
/// </summary>
private static string[] dizhi = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };/// <summary>
/// 十二生肖
/// </summary>
private static string[] shengxiao = { "鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };/// <summary>
/// 返回农历天干地支年
/// </summary>
/// <param name="year">公历年</param>
/// <returns></returns>
public static string GetLunisolarYear(int year)
{if (year > 3){int tgIndex = (year - 4) % 10;int dzIndex = (year - 4) % 12;return string.Concat(tiangan[tgIndex], dizhi[dzIndex], "[", shengxiao[dzIndex], "]");}throw new ArgumentOutOfRangeException("无效的年份!");
}       #endregion

region 农历月

/// <summary>
/// 农历月
/// </summary>
private static string[] months = { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二(腊)" };/// <summary>
/// 返回农历月
/// </summary>
/// <param name="month">月份</param>
/// <returns></returns>
public static string GetLunisolarMonth(int month)
{if (month < 13 && month > 0){return months[month - 1];}throw new ArgumentOutOfRangeException("无效的月份!");
}#endregion

region 农历日

/// <summary>
///
/// </summary>
private static string[] days1 = { "初", "十", "廿", "三" };/// <summary>
/// 日
/// </summary>
private static string[] days = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };/// <summary>
/// 返回农历日
/// </summary>
/// <param name="day"></param>
/// <returns></returns>
public static string GetLunisolarDay(int day)
{if (day > 0 && day < 32){if (day != 20 && day != 30){return string.Concat(days1[(day - 1) / 10], days[(day - 1) % 10]);}else{return string.Concat(days[day / 10], days1[1]);}}throw new ArgumentOutOfRangeException("无效的日!");
}#endregion

还有一个根据日期获取生肖的代码:

/// <summary>
/// 返回生肖
/// </summary>
/// <param name="datetime">公历日期</param>
/// <returns></returns>
public static string GetShengXiao(DateTime datetime)
{return shengxiao[cCalendar.GetTerrestrialBranch(cCalendar.GetSexagenaryYear(datetime)) - 1];
}

 
   

.net 如何判断农历节日相关推荐

  1. 根据日期获取农历节日

    package com.watsons.onstore.user.api.utils;import java.text.ParseException; import java.text.SimpleD ...

  2. IOS获取农历节日.节气

    获取农历节日的算法: +(NSString *)getLunarHoliDayDate:(NSDate *)date{ NSTimeInterval timeInterval_day = float( ...

  3. IOS 获取农历节日 节气

    扩展了前一篇农历的内容 转载请标明来自:http://blog.csdn.net/zhao_yin/ 获取农历节日的算法: [cpp]view plaincopyprint? +(NSString * ...

  4. NSDate 农历节日

    扩展了前一篇农历的内容 转载请标明来自:http://blog.csdn.net/zhao_yin/ 获取农历节日的算法: [cpp] view plaincopyprint? +(NSString  ...

  5. Javascript:公农历节日周年计算

    /* Geovin Du 塗聚文 20130608修改 toString():把数组转换成一个字符串 toLocaleString():把数组转换成一个字符串 join():把数组转换成一个用符号连接 ...

  6. vxe-input vue 日期选择组件带农历节日、小圆点提醒

    vxe-table vxe-input vue 日期选择组件带农历节日.小圆点提醒 默认的日期选择是没有节日信息的 可以通过 festival-method 方法自定义节日信息,接收一个对象,用于渲染 ...

  7. 天气预报 增加公历节日信息(1.确定时间2.第几周第几天) 和 农历节日信息 体力活+外码

    1.确定公历节日信息实现了 2.第几周第几天还需要继续实现,大致思路是参照网上的: // 某月的第几个星期几. 5,6,7,8 表示到数第 1,2,3,4 个星期几String wFtv[] = {& ...

  8. Outlook中添加中国农历节日

    Outlook中直接添加农历节日非常不方便, Google后找到解决办法如下: 一. ics文件导入法推荐 下载如下农历日历: http://www.google.com/calendar/ical/ ...

  9. 获取农历节日、节气方法

    扩展了前一篇农历的内容 转载请标明来自:http://blog.csdn.net/zhao_yin/ 获取农历节日的算法: [cpp]  view plain copy print ? +(NSStr ...

最新文章

  1. 没有内幕交易:Coinbase完成了比特币现金调查
  2. android 中使用ExpandableListView控件结合服务器json文件的下载
  3. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot
  4. 幼师资格证综合素质计算机知识点,幼师资格证复习资料
  5. 数据结构和算法———P3 时间复杂度和空间复杂度
  6. 中国磷矿市场趋势报告、技术动态创新及市场预测
  7. 万智牌天使恩典oracle,#诡局#诡局机制
  8. java实现 mysql导入_怎么用java实现mysql数据库的导入导出
  9. windows服务器设置开机启动的几种方式
  10. 计算机网络英语的参考文献,计算机网络实践英文参考文献 计算机网络实践英语参考文献哪里找...
  11. 游戏常用数据分析指标汇总
  12. 关于Cascading
  13. 微信小程序 环形进度条_微信小程序实现圆形进度条实例分享
  14. key、keyCode 和 which
  15. 时间转换数字与日期互转
  16. Vue-你不知道的Bus中央数据总线学习
  17. 混合改进策略的黑猩猩优化算法
  18. Cesium获取绘制范围内地形高程进行淹没分析
  19. 关于SSM的家具购物系统的设计答辩问题合集
  20. 刘二第九节,多分类问题

热门文章

  1. solr使用shards提示403
  2. 如何避免数据湖变成数据沼泽
  3. Mouse_event()
  4. Cadence orcad 导出网表(.asc文件)
  5. “机智歌王”--沙鸥,大陆的的张帝
  6. matlab s-function找不到
  7. 「SQL数据分析系列」3.查询入门
  8. 智慧校园管理系统,精细化+网格化
  9. LaTeX技巧004:给文字添加下划线、波浪线等样式
  10. python彩蛋_Python的2个彩蛋