• 由.Net类库提供的农历计算(C#农历)-获取当前日期的农历日期


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Globalization;

    /**
     * 说明:在东亚各国,除了通用的公元纪年之外,还有各自以前使用的阴历纪年法,在.net2.0种增加了针对东亚各国的日历类EastAsianLunisolarCalendar,
     * 它是一个抽象类,有各种针对不同国家的的子类,其中ChineseLunisolarCalendar就是针对中国的日历类,它提公元纪年与中国传统农历纪年之间的相互转换
     * 利用它可以计算天干地支等有关农历的信息,本程序就是来简单展示这个类的用法。它能计算的农历范围从公历1901-2-19至2101-1-28。
     * 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2007/11/21/1896258.aspx
     
    */
    namespace ChineseCalendar
    {
        
    class Program
        {
            
    private static ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar();
            
    static void Main(string[] args)
            {
                
    //ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar();
                ShowYearInfo();
                ShowCurrentYearInfo();
                Console.ReadLine();
            }
            
    /// <summary>
            
    /// 展示阴历年份信息
            
    /// </summary>
            public static void ShowYearInfo()
            {
                
    for (int i = chineseDate.MinSupportedDateTime.Year; i < chineseDate.MaxSupportedDateTime.Year; i++)
                {
                    Console.WriteLine(
    "年份:{0},月份总数:{1},总天数:{2},干支序号:{3}", i, chineseDate.GetMonthsInYear(i),chineseDate.GetDaysInYear(i)
                        ,chineseDate.GetSexagenaryYear(
    new DateTime(i,3,1)));
                }
            }
            
    /// <summary>
            
    /// 展示当前年份信息
            
    /// </summary>
            public static void ShowCurrentYearInfo()
            {
                Console.WriteLine(
    "今年的阴历时间:{0}年{1}月{2}日。", chineseDate.GetYear(DateTime.Now),chineseDate.GetMonth(DateTime.Now),chineseDate.GetDayOfMonth(DateTime.Now));
                Console.WriteLine(
    "今年阴历天数:{0},今年{1}闰年", chineseDate.GetDaysInYear(DateTime.Now.Year),(chineseDate.IsLeapYear(DateTime.Now.Year)==true)?"":"不是");
                Console.WriteLine(
    "今年农历每月的天数:");
                
    for (int i = 1; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++)
                {
                    Console.Write(
    "{0,-5}",chineseDate.GetDaysInMonth(DateTime.Now.Year,i));
                }
            }
        }
    }

    运行结果:

  • 相关阅读:
    优化SQL查询:如何写出高性能SQL语句
    动态库与静态库
    多线程程序中fork导致的一些问题
    合理的使用size_t可以提高程序的可移植性和代码的可读性,让你的程序更高效。
    linux下C++ STL hash_map的使用以及使用char *型变量作为Key值的一大“坑”
    阅读腾讯编程规范的笔记
    2、vector的实现
    linux下C++对线程的封装
    1、空间配置器
    SQL Server三种表连接原理
  • 原文地址:https://www.cnblogs.com/prvin/p/3356645.html
Copyright © 2020-2023  润新知