DateUtil.cs
上传用户:autodoor
上传日期:2022-08-04
资源大小:9973k
文件大小:7k
源码类别:

.net编程

开发平台:

Others

  1. using System;
  2. namespace qminoa.Common
  3. {
  4. /// <summary>
  5. /// 日期处理函数包
  6. /// </summary>
  7. public class DateUtil
  8. {
  9. //构造函数
  10. public DateUtil()
  11. {
  12. }
  13.     #region 方法
  14. /// <summary>返回本年有多少天</summary>
  15. /// <param name="iYear">年份</param>
  16. /// <returns>本年的天数</returns>
  17. public static int GetDaysOfYear(int iYear)
  18. {
  19. int cnt = 0  ;
  20. if (  IsRuYear(iYear) ) 
  21. {
  22. //闰年多 1 天 即:2 月为 29 天
  23.     cnt = 366;
  24. }
  25. else
  26. {
  27.        //--非闰年少1天 即:2 月为 28 天
  28.    cnt = 365;
  29. }
  30. return cnt;
  31. }
  32. /// <summary>本年有多少天</summary>
  33. /// <param name="dt">日期</param>
  34. /// <returns>本天在当年的天数</returns>
  35. public static int GetDaysOfYear(DateTime idt)
  36. {
  37. int n ;
  38. //取得传入参数的年份部分,用来判断是否是闰年
  39. n = idt.Year;
  40. if (  IsRuYear(n) ) 
  41. {
  42. //闰年多 1 天 即:2 月为 29 天
  43. return 366; 
  44. }
  45. else
  46. {
  47. //--非闰年少1天 即:2 月为 28 天
  48. return 365;
  49. }
  50. }
  51. /// <summary>本月有多少天</summary>
  52. /// <param name="iYear">年</param>
  53. /// <param name="Month">月</param>
  54. /// <returns>天数</returns>
  55. public static int GetDaysOfMonth(int iYear,int Month)
  56. {
  57.    int days=0;
  58. switch (Month)
  59. {
  60. case 1:
  61. days = 31;
  62. break;
  63. case 2:
  64. if (  IsRuYear(iYear) ) 
  65. {
  66. //闰年多 1 天 即:2 月为 29 天
  67. days = 29;
  68. }
  69. else
  70. {
  71. //--非闰年少1天 即:2 月为 28 天
  72. days = 28;
  73. }
  74. break;
  75. case 3:
  76. days = 31;
  77. break;
  78. case 4:
  79. days = 30;
  80. break;
  81. case 5:
  82. days = 31;
  83. break;
  84. case 6:
  85. days = 30;
  86. break;
  87. case 7:
  88. days = 31;
  89. break;
  90. case 8:
  91. days = 31;
  92. break;
  93. case 9:
  94. days = 30;
  95. break;
  96. case 10:
  97. days = 31;
  98. break;
  99. case 11:
  100. days = 30;
  101. break;
  102. case 12:
  103. days = 31;
  104. break;
  105. }    
  106. return days ;
  107. }
  108. /// <summary>本月有多少天</summary>
  109. /// <param name="dt">日期</param>
  110. /// <returns>天数</returns>
  111. public static int GetDaysOfMonth(DateTime dt)
  112. {
  113. //--------------------------------//
  114. //--从dt中取得当前的年,月信息  --//
  115. //--------------------------------//
  116. int year,month,days=0;
  117. year = dt.Year ;
  118. month = dt.Month ;
  119. //--利用年月信息,得到当前月的天数信息。
  120. switch (month)
  121. {
  122. case 1:
  123. days = 31;
  124. break;
  125. case 2:
  126. if (  IsRuYear(year) ) 
  127. {
  128. //闰年多 1 天 即:2 月为 29 天
  129. days = 29;
  130. }
  131. else
  132. {
  133. //--非闰年少1天 即:2 月为 28 天
  134. days = 28;
  135. }
  136. break;
  137. case 3:
  138. days = 31;
  139. break;
  140. case 4:
  141. days = 30;
  142. break;
  143. case 5:
  144. days = 31;
  145. break;
  146. case 6:
  147. days = 30;
  148. break;
  149. case 7:
  150. days = 31;
  151. break;
  152. case 8:
  153. days = 31;
  154. break;
  155. case 9:
  156. days = 30;
  157. break;
  158. case 10:
  159. days = 31;
  160. break;
  161. case 11:
  162. days = 30;
  163. break;
  164. case 12:
  165. days = 31;
  166. break;
  167. }    
  168. return days ;
  169. }
  170. /// <summary>返回当前日期的星期名称</summary>
  171. /// <param name="dt">日期</param>
  172. /// <returns>星期名称</returns>
  173. public static string GetWeekNameOfDay(DateTime idt)
  174. string dt ,week="";
  175. dt = idt.DayOfWeek.ToString();
  176. switch  (dt)
  177. {
  178. case "Mondy":
  179. week= "星期一";
  180. break;
  181. case "Tuesday" :
  182. week= "星期二";
  183. break;
  184. case "Wednesday":
  185. week= "星期三";
  186. break;
  187. case "Thursday" :
  188. week= "星期四";
  189. break;
  190. case "Friday" :
  191. week= "星期五";
  192. break;
  193. case "Saturday":
  194. week= "星期六";
  195. break;
  196. case "Sunday":
  197. week = "星期日";
  198. break;
  199. }
  200. return week;
  201. }
  202. /// <summary>返回当前日期的星期编号</summary>
  203. /// <param name="dt">日期</param>
  204. /// <returns>星期数字编号</returns>
  205. public static string GetWeekNumberOfDay(DateTime idt)
  206. string dt,week="";
  207. dt = idt.DayOfWeek.ToString();
  208. switch  (dt)
  209. {
  210. case "Mondy":
  211. week= "1";
  212. break;
  213. case "Tuesday" :
  214. week= "2";
  215. break;
  216. case "Wednesday":
  217. week= "3";
  218. break;
  219. case "Thursday" :
  220. week= "4";
  221. break;
  222. case "Friday" :
  223. week= "5";
  224. break;
  225. case "Saturday":
  226. week= "6";
  227. break;
  228. case "Sunday":
  229. week = "7";
  230. break;
  231. }    
  232. return week;
  233. }
  234. /// <summary>返回两个日期之间相差的天数</summary>
  235. /// <param name="dt">两个日期参数</param>
  236. /// <returns>天数</returns>
  237. public static int DiffDays(DateTime dtfrm,DateTime dtto)
  238. int diffcnt=0;
  239. //diffcnt = dtto- dtfrm ;
  240. return diffcnt;
  241. }
  242. /// <summary>判断当前日期所属的年份是否是闰年,私有函数</summary>
  243. /// <param name="dt">日期</param>
  244. /// <returns>是闰年:True ,不是闰年:False</returns>
  245. private static bool IsRuYear(DateTime idt)
  246. {
  247. //形式参数为日期类型 
  248. //例如:2003-12-12
  249. int n ;
  250. n = idt.Year;
  251. if (  (n % 400  == 0)  ||   (n %  4 == 0 && n % 100  != 0)  ) 
  252. {
  253. return true;
  254. }
  255. else
  256. {
  257. return false;
  258. }
  259. }
  260. /// <summary>判断当前年份是否是闰年,私有函数</summary>
  261. /// <param name="dt">年份</param>
  262. /// <returns>是闰年:True ,不是闰年:False</returns>
  263. private static bool IsRuYear(int iYear)
  264. {
  265. //形式参数为年份
  266. //例如:2003
  267. int n ;
  268. n = iYear;
  269. if  (   (  n % 400 == 0)  ||   (n % 4 == 0 && n % 100  != 0)  ) 
  270. {
  271. return true;
  272. }
  273. else
  274. {
  275. return false;
  276. }
  277. }
  278. /// <summary>
  279. /// 将输入的字符串转化为日期。如果字符串的格式非法,则返回当前日期。
  280. /// </summary>
  281. /// <param name="strInput">输入字符串</param>
  282. /// <returns>日期对象</returns>
  283. public static DateTime ConvertStringToDate(string strInput)
  284. {
  285. DateTime oDateTime;
  286. try
  287. {
  288. oDateTime=DateTime.Parse(strInput);       
  289. }
  290. catch(Exception)
  291. {
  292. oDateTime=DateTime.Today;  
  293. }
  294. return oDateTime;
  295. }
  296. /// <summary>
  297. /// 将日期对象转化为格式字符串
  298. /// </summary>
  299. /// <param name="oDateTime">日期对象</param>
  300. /// <param name="strFormat">
  301. /// 格式:
  302. /// "SHORTDATE"===短日期
  303. /// "LONGDATE"==长日期
  304. /// 其它====自定义格式
  305. /// </param>
  306. /// <returns>日期字符串</returns>
  307. public static string ConvertDateToString(DateTime oDateTime,string strFormat)
  308. {
  309. string strDate="";
  310. try
  311. {
  312. switch(strFormat.ToUpper())
  313. {
  314. case "SHORTDATE":
  315. strDate=oDateTime.ToShortDateString();
  316. break;
  317. case "LONGDATE":
  318. strDate=oDateTime.ToLongDateString() ;
  319. break;
  320. default:
  321. strDate=oDateTime.ToString(strFormat) ;
  322. break;
  323. }
  324. }
  325. catch(Exception)
  326. {
  327. strDate=oDateTime.ToShortDateString();
  328. }
  329. return strDate;
  330. }
  331. /// <summary>
  332. /// 判断是否为合法日期,必须大于1800年1月1日
  333. /// </summary>
  334. /// <param name="strDate">输入日期字符串</param>
  335. /// <returns>True/False</returns>
  336. public static bool IsDateTime(string strDate)
  337. {
  338. try
  339. {
  340. DateTime oDate=DateTime.Parse(strDate); 
  341. if(oDate.CompareTo(DateTime.Parse("1800-1-1") )>0)
  342. return true;
  343. else
  344. return false;
  345. }
  346. catch(Exception)
  347. {
  348. return false;
  349. }
  350. }
  351. #endregion
  352. }
  353. }