using System;
using System.Collections.Generic;
using System.Text;
namespace Common
{
public class DateUtil
{
#region 构造函数
//构造函数
public DateUtil()
{
}
#endregion
#region 返回本年有多少天
/// <summary>返回本年有多少天</summary>
/// <param name="iYear">年份</param>
/// <returns>本年的天数</returns>
public static int GetDaysOfYear(int iYear)
{
int cnt = 0;
if (IsRuYear(iYear))
{
//闰年多 1 天 即:2 月为 29 天
cnt = 366;
}
else
{
//--非闰年少1天 即:2 月为 28 天
cnt = 365;
}
return cnt;
}
#endregion
#region 本年有多少天
/// <summary>本年有多少天</summary>
/// <param name="dt">日期</param>
/// <returns>本天在当年的天数</returns>
public static int GetDaysOfYear(DateTime idt)
{
int n;
//取得传入参数的年份部分,用来判断是否是闰年
n = idt.Year;
if (IsRuYear(n))
{
//闰年多 1 天 即:2 月为 29 天
return 366;
}
else
{
//--非闰年少1天 即:2 月为 28 天
return 365;
}
}
#endregion
#region 本月有多少天
/// <summary>本月有多少天</summary>
/// <param name="iYear">年</param>
/// <param name="Month">月</param>
/// <returns>天数</returns>
public static int GetDaysOfMonth(int iYear, int Month)
{
int days = 0;
switch (Month)
{
case 1:
days = 31;
break;
case 2:
if (IsRuYear(iYear))
{
//闰年多 1 天 即:2 月为 29 天
days = 29;
}
else
{
//--非闰年少1天 即:2 月为 28 天
days = 28;
}
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
}
return days;
}
#endregion
#region 本月有多少天
/// <summary>本月有多少天</summary>
/// <param name="dt">日期</param>
/// <returns>天数</returns>
public static int GetDaysOfMonth(DateTime dt)
{
//--------------------------------//
//--从dt中取得当前的年,月信息 --//
//--------------------------------//
int year, month, days = 0;
year = dt.Year;
month = dt.Month;
//--利用年月信息,得到当前月的天数信息。
switch (month)
{
case 1:
days = 31;
break;
case 2:
if (IsRuYear(year))
{
//闰年多 1 天 即:2 月为 29 天
days = 29;
}
else
{
//--非闰年少1天 即:2 月为 28 天
days = 28;
}
break;
case 3:
days = 31;
break;
case 4:
days = 30;
break;
case 5:
days = 31;
break;
case 6:
days = 30;
break;
case 7:
days = 31;
break;
case 8:
days = 31;
break;
case 9:
days = 30;
break;
case 10:
days = 31;
break;
case 11:
days = 30;
break;
case 12:
days = 31;
break;
}
return days;
}
#endregion
#region 返回当前日期的星期名称
/// <summary>返回当前日期的星期名称</summary>
/// <param name="dt">日期</param>
/// <returns>星期名称</returns>
public static string GetWeekNameOfDay(DateTime idt)
{
string dt, week = "";
dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
week = "星期一";
break;
case "Tuesday":
week = "星期二";
break;
case "Wednesday":
week = "星期三";
break;
case "Thursday":
week = "星期四";
break;
case "Friday":
week = "星期五";
break;
case "Saturday":
week = "星期六";
break;
case "Sunday":
week = "星期日";
break;
}
return week;
}
#endregion
#region 返回当前日期的星期编号
/// <summary>返回当前日期的星期编号</summary>
/// <param name="dt">日期</param>
/// <returns>星期数字编号</returns>
public static int GetWeekNumberOfDay(DateTime idt)
{
string dt;
int week = 1;
dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
week = 1;
break;
case "Tuesday":
week = 2;
break;
case "Wednesday":
week = 3;
break;
case "Thursday":
week = 4;
break;
case "Friday":
week = 5;
break;
case "Saturday":
week = 6;
break;
case "Sunday":
week = 7;
break;
}
return week;
}
#endregion
#region 返回当前时间的一周前时间
/// <summary>
/// 返回当前时间的一周前时间
/// </summary>
/// <param name="idt"></param>
/// <returns></returns>
public static DateTime GetStartTime(DateTime idt)
{
string dt;
dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
return idt.AddDays(-7);
case "Tuesday":
return idt.AddDays(-8);
case "Wednesday":
return idt.AddDays(-9);
case "Thursday":
return idt.AddDays(-10);
case "Friday":
return idt.AddDays(-11);
case "Saturday":
return idt.AddDays(-12);
case "Sunday":
return idt.AddDays(-13);
default:
return idt.AddDays(-7);
}
}
#endregion
#region 返回当前时间的一周后时间
public static DateTime GetEndTime(DateTime idt)
{
string dt;
dt = idt.DayOfWeek.ToString();
switch (dt)
{
case "Mondy":
return idt.AddDays(-1);
case "Tuesday":
return idt.AddDays(-2);
case "Wednesday":
return idt.AddDays(-3);
case "Thursday":
return idt.AddDays(-4);
case "Friday":
return idt.AddDays(-5);
case "Saturday":
return idt.AddDays(-6);
case "Sunday":
return idt.AddDays(-7);
default:
return idt.AddDays(-1);
}
}
#endregion
#region 返回二日期差的天数和小时数
/// <summary>
/// 返回二日期差的天数和小时数
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
public static string DateDiff(System.DateTime startDate, System.DateTime endDate)
{
System.TimeSpan TS = new System.TimeSpan(endDate.Ticks - startDate.Ticks);
return (Convert.ToInt32(TS.TotalHours / 24).ToString() + " 天 " + Convert.ToInt32(TS.TotalHours % 24).ToString() + " 小时");
}
#endregion
#region 返回两个日期之间相差的天数
/// <summary>返回两个日期之间相差的天数</summary>
/// <param name="dt">两个日期参数</param>
/// <returns>天数</returns>
public static int DiffDays(DateTime dtfrm, DateTime dtto)
{
int diffcnt = 0;
//diffcnt = dtto- dtfrm ;
return diffcnt;
}
#endregion
#region 判断当前日期所属的年份是否是闰年,私有函数
/// <summary>判断当前日期所属的年份是否是闰年,私有函数</summary>
/// <param name="dt">日期</param>
/// <returns>是闰年:True ,不是闰年:False</returns>
private static bool IsRuYear(DateTime idt)
{
//形式参数为日期类型
//例如:2003-12-12
int n;
n = idt.Year;
if ((n % 400 == 0) || (n % 4 == 0 && n % 100 != 0))
{
return true;
}
else
{
return false;
}
}
#endregion
#region 判断当前年份是否是闰年,私有函数
/// <summary>判断当前年份是否是闰年,私有函数</summary>
/// <param name="dt">年份</param>
/// <returns>是闰年:True ,不是闰年:False</returns>
private static bool IsRuYear(int iYear)
{
//形式参数为年份
//例如:2003
int n;
n = iYear;
if ((n % 400 == 0) || (n % 4 == 0 && n % 100 != 0))
{
return true;
}
else
{
return false;
}
}
#endregion
#region 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期
/// <summary>
/// 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期。
/// </summary>
/// <param name="strInput">输入字符串</param>
/// <returns>日期对象</returns>
public static DateTime ConvertStringToDate(string strInput)
{
DateTime oDateTime;
try
{
oDateTime = DateTime.Parse(strInput);
}
catch (Exception)
{
oDateTime = DateTime.Today;
}
return oDateTime;
}
#endregion
#region 将日期对象转化为格式字符串
/// <summary>
/// 将日期对象转化为格式字符串
/// </summary>
/// <param name="oDateTime">日期对象</param>
/// <param name="strFormat">
/// 格式:
/// "SHORTDATE"===短日期
/// "LONGDATE"==长日期
/// 其它====自定义格式
/// </param>
/// <returns>日期字符串</returns>
public static string ConvertDateToString(DateTime oDateTime, string strFormat)
{
string strDate = "";
try
{
switch (strFormat.ToUpper())
{
case "SHORTDATE":
strDate = oDateTime.ToShortDateString();
break;
case "LONGDATE":
strDate = oDateTime.ToLongDateString();
break;
default:
strDate = oDateTime.ToString(strFormat);
break;
}
}
catch (Exception)
{
strDate = oDateTime.ToShortDateString();
}
return strDate;
}
#endregion
#region 判断是否为合法日期,必须大于1800年1月1日
/// <summary>
/// 判断是否为合法日期,必须大于1800年1月1日
/// </summary>
/// <param name="strDate">输入日期字符串</param>
/// <returns>True/False</returns>
public static bool IsDateTime(string strDate)
{
try
{
DateTime oDate = DateTime.Parse(strDate);
if (oDate.CompareTo(DateTime.Parse("1800-1-1")) > 0)
return true;
else
return false;
}
catch (Exception)
{
return false;
}
}
#endregion
}
}
DateUtil共通使用
最新推荐文章于 2022-11-15 15:32:54 发布