?? dateutil.cs
字號:
using System;
namespace qminoa.Common
{
/// <summary>
/// 日期處理函數包
/// </summary>
public class DateUtil
{
//構造函數
public DateUtil()
{
}
#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;
}
/// <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;
}
}
/// <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 ;
}
/// <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 ;
}
/// <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;
}
/// <summary>返回當前日期的星期編號</summary>
/// <param name="dt">日期</param>
/// <returns>星期數字編號</returns>
public static string GetWeekNumberOfDay(DateTime idt)
{
string dt,week="";
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;
}
/// <summary>返回兩個日期之間相差的天數</summary>
/// <param name="dt">兩個日期參數</param>
/// <returns>天數</returns>
public static int DiffDays(DateTime dtfrm,DateTime dtto)
{
int diffcnt=0;
//diffcnt = dtto- dtfrm ;
return diffcnt;
}
/// <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;
}
}
/// <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;
}
}
/// <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;
}
/// <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;
}
/// <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
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -