following Code is Chinese date time conver to Common calendar and Common Calendar conver to Chinese Calendar method.
FYI.
Author : Jimmy xie
Write date : 2010-April - 14
static void Jimmy_ChineseLunisolarDate(Args _args) { Dialog dlg = new Dialog("Calendar conver to Chinese Lunisolar Date"); DialogField dlgDate = dlg.addField(typeid(TransDateTime),"Calendar"); DialogField dlgType = dlg.addField(typeid(Noyes),"公历转农历"); TransDateTime Calendar; str 100 ChineseLunisolarDate(TransDateTime CalendarDateTime) { int years,month,day,leapMonth,Weekday; Container J = ['甲',"乙",'丙','丁','戊','己','庚','辛','壬','癸']; Container z = ["子","丑","寅","卯","巳","午","未","申","酉","戌","亥"]; Container s = ["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]; Container w = ["无","正","二","三","四","五","六","七","八","九","十","冬","腊"]; Container c = ["初","十","廿","三"]; Container r = ["日","一","二","三","四","五","六","七","八","九"]; Container wd = ['日',"一","二","三","四","五","六"]; Str 20 jj,zz,ss,ww,cc,rr,rn,ry,wkday; Str 100 ChineseStr; System.Globalization.ChineseLunisolarCalendar clc; boolean isleapMonth,IsLeapYear; ; clc = new System.Globalization.ChineseLunisolarCalendar(); years = clc.GetYear(CalendarDateTime); month = clc.GetMonth(CalendarDateTime); day = clc.GetDayOfMonth(CalendarDateTime); leapMonth = clc.GetLeapMonth(years); Weekday = clc.GetDayOfWeek(CalendarDateTime); IsLeapYear = clc.IsLeapYear(years); jj = Conpeek(J,(years - 4) MOD 10 + 1); zz = Conpeek(Z,(years - 4) MOD 12 +1); SS = Conpeek(S,(years - 4) MOD 12 +1); //wkday = '星期' + Conpeek(wd,Weekday + 1); wkday = dayname(Weekday); if (leapMonth > 0) { if (leapMonth == month) //闰月 { isleapMonth = true; ry = '闰月'; month = month - 1; } else if (month > leapMonth) { month = month - 1; } } WW = Conpeek(W,month + 1); cc = ConPeek(C,day / 10 + 1); rr = ConPeek(R,day mod 10 + 1); if(leapMonth) ry = '润'; else ry = '平'; if(IsLeapYear) rn = '润'; else rn = '平'; ChineseStr = strfmt("%1%2%3(%8)年(%4)%5月 %6%7日" ,JJ,ZZ,ss,ry,WW,cc,rr,rn)+ wkday; return ChineseStr + strfmt(" %1年 %2月 %3日",years,month,day); } str 100 CalendarConverToChineseDate(TransDateTime ChineseDate) { int years,month,day,hour,minutes,second; TransDateTime CalendarStr; System.Globalization.ChineseLunisolarCalendar clc = new System.Globalization.ChineseLunisolarCalendar(); ; years = datetimeutil::year(ChineseDate); Month = datetimeutil::month(ChineseDate); day = datetimeutil::day(ChineseDate); hour = datetimeutil::hour(ChineseDate); minutes = datetimeutil::minute(ChineseDate); second = datetimeutil::second(ChineseDate); CalendarStr = clc.ToDateTime(years,Month,day,hour,minutes,second,0); return strfmt("农历 : %1;公历:%2",ChineseDate,CalendarStr); } ; dlgDate.value(datetimeUtil::applyTimeZoneOffset(dateTimeUtil::utcNow(),datetimeutil::getCompanyTimeZone())); dlg.doInit(); if(!dlg.run()) return ; if(dlgType.value()) info(ChineseLunisolarDate(dlgDate.value())); else info(CalendarConverToChineseDate(dlgDate.value())); } //Common Function // print dateTimeUtil::getSystemDateTime(); // Calendar = dateTimeUtil::newDateTime(mkdate(19,12,1985),0);//My birthday 11初八 // Calendar = dateTimeUtil::newDateTime(today(),0); // print dateTimeUtil::utcNow(); // print global::utcDateTime2SystemDateTime(Calendar); // Calendar = datetimeUtil::applyTimeZoneOffset(Calendar,datetimeutil::getCompanyTimeZone());