时间 日历 判断闰年或者平年
/// <summary> /// 根据所选时间(年和月)得到当月日历表 /// </summary> public class CalenderDT { public DataTable Convert( int year, int month) { DataTable dt = new DataTable(); dt.Columns.Add( "星期日" , typeof (String)); dt.Columns.Add( "星期一" , typeof (String)); dt.Columns.Add( "星期二" , typeof (String)); dt.Columns.Add( "星期三" , typeof (String)); dt.Columns.Add( "星期四" , typeof (String)); dt.Columns.Add( "星期五" , typeof (String)); dt.Columns.Add( "星期六" , typeof (String)); DataRow dr; int days = GetDaysOfMonth(year, month); int firstDayOfMonth = GetWeekOfDate(year, month, 1); dr = dt.NewRow(); for ( int i = 1; i <= days; i++) { dr[(firstDayOfMonth+i-1) % 7] = i; if (GetWeekOfDate(year, month, i) == 6) { dt.Rows.Add(dr); dr = dt.NewRow(); } } dt.Rows.Add(dr); return dt; } #region 判断是否为闰年 public static bool IsleapYear( int year) { if ((year % 4 == 0 && year % 100 != 100) || year % 400 == 0) { return true ; } else return false ; } #endregion #region 判断一个月有多少天 public static int GetDaysOfMonth( int year, int month) { int days = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break ; case 4: case 6: case 9: case 11: days = 30; break ; case 2: days = IsleapYear(year) ? 29 :28; break ; default : days = 30; break ; } return days; } #endregion #region 判断一年有多少天 public static int GetDaysOfYear( int year) { return IsleapYear(year) ? 366 : 365; } #endregion #region 时间的星期 public static int GetWeekOfDate( int year, int month, int day) { int days = GetDaysOfDate(year, month, day); return (days + 2) % 7; } #endregion #region 判断该日是星期几 public static string GetWeek( string str) { string [] strs = str.Split( '-' ); int week=GetWeekOfDate( int .Parse(strs[0]), int .Parse(strs[1]), int .Parse(strs[2])); switch (week) { case 1: return "星期一" ; case 2: return "星期二" ; case 3: return "星期三" ; case 4: return "星期四" ; case 5: return "星期五" ; case 6: return "星期六" ; case 7: return "星期日" ; default : return "星期日" ; } } #endregion #region 距离1980年有多少天 public static int GetDaysOfDate( int year, int month, int day) { int totalDays = 0; for ( int i = 1980; i < year; i++) { totalDays = totalDays + GetDaysOfYear(i); } for ( int i = 1; i < month; i++) { totalDays += GetDaysOfMonth(year, i); } totalDays = totalDays + day - 1; return totalDays ; } #endregion } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现