转:原文http://blog.csdn.net/zswang/article/details/4526503

 

公历转农历得使用农历闰年闰月对照表

好在.NET已经预备了这个对照表,我们不用再去声明,可以直接使用

         Public Shared Function ChineseLunisolarDate(ADataTime As DateTime) As String
            Dim clc = New System.Globalization.ChineseLunisolarCalendar()
            Dim year = clc.GetYear(ADataTime)
            Dim month = clc.GetMonth(ADataTime)
            Dim day = clc.GetDayOfMonth(ADataTime)
            Dim leapMonth = clc.GetLeapMonth(year)
            Return String.Format("{0}{1} {2}年{3}{4}月{5}{6}", "甲乙丙丁戊己庚辛壬癸"((year - 4) Mod 10), "子丑寅卯辰巳午未申酉戌亥"((year - 4) Mod 12), "鼠牛虎兔龙蛇马羊猴鸡狗猪"((year - 4) Mod 12), If(month = leapMonth, "润", ""), "无正二三四五六七八九十冬腊"(If(leapMonth > 0 AndAlso leapMonth <= month, month - 1, month)), _
                "初十廿三"(day \ 10), "日一二三四五六七八九"(day Mod 10))
        End Function