diff --git a/web/App_Code/Model/Partial/follower.cs b/web/App_Code/Model/Partial/follower.cs index 964fbe6..61175b1 100644 --- a/web/App_Code/Model/Partial/follower.cs +++ b/web/App_Code/Model/Partial/follower.cs @@ -10,6 +10,8 @@ using System.Reflection.Emit; using System.Runtime.Serialization; using System.Web; using System.Web.Http; +using tyme.solar; + namespace Model { @@ -71,12 +73,12 @@ namespace Model 鼠 = 1, 牛 = 2, 虎 = 3, 兔 = 4, 龍 = 5, 蛇 = 6, 馬 = 7, 羊 = 8, 猴 = 9, 雞 = 10, 狗 = 11, 豬 = 12 } - enum heavenlyStems + public enum heavenlyStems { 甲 = 1, 乙, 丙, 丁, 戊, 己, 庚, 辛, 壬, 癸 } - enum earthlyBranches + public enum earthlyBranches { 子 = 1, 丑, 寅, 卯, 辰, 巳, 午, 未, 申, 酉, 戌, 亥 } @@ -85,28 +87,24 @@ namespace Model public static string chagenSign(DateTime? date) { //可改公用 //生肖 + if (date == null) return null; + + DateTime d = date.Value; + + // 使用 tyme4net 方法 try - { - if (date != null) - { - DateTime d = date ?? DateTime.Now; - int year = d.Year; - int birthpet; //宣告生肖要用的變數 - - birthpet = year % 12; //西元年除12取餘數 - birthpet -= 3; - //餘數-3 - if (birthpet <= 0) birthpet += 12; - //判斷餘數是否大於0,小於0必須+12 - return Enum.GetName(typeof(chinese), birthpet); - //return ((chinese)birthpet).ToString(); //也可以 - } + { + var solarDay = SolarDay.FromYmd(d.Year, d.Month, d.Day); + var lunarDay = solarDay.GetLunarDay(); + + // 使用正確的 tyme4net API + var lunarYear = tyme.lunar.LunarYear.FromYear(lunarDay.Year); + return lunarYear.SixtyCycle.EarthBranch.GetZodiac().GetName(); } - catch + catch (Exception ex) { - //return null; + return $"生肖計算錯誤: {ex.Message}"; } - return null; } public static string sexagenary(DateTime? date) { diff --git a/web/App_Code/publicFun.cs b/web/App_Code/publicFun.cs index 368343c..8005d66 100644 --- a/web/App_Code/publicFun.cs +++ b/web/App_Code/publicFun.cs @@ -8,6 +8,9 @@ using System.Drawing.Imaging; using System.Drawing; using System.IO; using System.Web; +using tyme.solar; +using tyme.lunar; +using tyme.sixtycycle; /// /// publicFun 的摘要描述 @@ -86,27 +89,35 @@ public class publicFun public static string chagenDate(DateTime? date)//因為欄位值是nullable, 所以把null的處理拉進函數做 { //可改公用 //農曆年 - ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar(); + if (date == null) return null; + + DateTime d = date.Value; + + // 使用 tyme4net 方法 try { - if (date != null) + var solarDay = SolarDay.FromYmd(d.Year, d.Month, d.Day); + var lunarDay = solarDay.GetLunarDay(); + + int minYear = lunarDay.Year - 1911; + return $"民{minYear}年/{lunarDay.ToString().Substring(2)}"; + } + catch (Exception ex) + { + // 如果 tyme4net 完全失敗,回退到原本的方法 + try { - DateTime d = date ?? DateTime.Now; + ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar(); int yy = chineseDate.GetYear(d) - 1911; int mm = chineseDate.GetMonth(d); int dd = chineseDate.GetDayOfMonth(d); - string dstr = $"民{yy}年{mm:00}月{dd:00}日"; - return dstr; + return $"民{yy}年{mm:00}月{dd:00}日"; + } + catch + { + return $"農曆轉換錯誤: {ex.Message}"; } } - catch - { //try catch可能會很慢, 已知條件先判斷 - //return null; - } - return null; - //民國年 - //System.Globalization.TaiwanCalendar tc = new System.Globalization.TaiwanCalendar(); - // tc.GetYear(d), tc.GetMonth(d), tc.GetDayOfMonth(d) } #region 刪除檔案 for api diff --git a/web/Bin/tyme.dll b/web/Bin/tyme.dll new file mode 100644 index 0000000..e69140c Binary files /dev/null and b/web/Bin/tyme.dll differ diff --git a/web/admin/follower/index.aspx b/web/admin/follower/index.aspx index 97463da..2379834 100644 --- a/web/admin/follower/index.aspx +++ b/web/admin/follower/index.aspx @@ -45,7 +45,6 @@ { text: '身分別', value: 'identity_type_desc' }, { text: '性別', value: 'sex' }, { text: '生日', value: 'birthday' }, - { text: '生肖/干支', value: 'sign', sortable: false }, { text: '報名記錄', value: 'order_record' }, { text: '', value: 'slot', sortable: false }, { text: '', value: 'slot_btn', sortable: false, align: 'end' }, @@ -414,12 +413,16 @@ class="elevation-1"> -