C#时间操作类
using System; namespace DotNet.Utilities { ///<summary> ///时间类 ///1、SecondToMinute(int Second)把秒转换成分钟 ///</summary> public class TimeHelper { ///<summary> ///将时间格式化成年月日的形式,如果时间为null,返回当前系统时间 ///</summary> ///<param name="dt">年月日分隔符</param> ///<param name="Separator"></param> ///<returns></returns> public string GetFormatDate(DateTime dt,char Separator) { if(dt !=null &&!dt.Equals(DBNull.Value)) { string tem=string.Format("yyyy{0}MM{1}dd",Separator,Separator); return dt.ToString(tem); } else { return GetFormatDate(DateTime.Now,Separator); } } ///<summary> ///将时间格式化成时分秒的形式,如果时间为null,返回当前系统时间 ///<summary> ///<param name="dt"></param> ///<param name="Separator"></param> ///<returns></returns> public string GetFormatTime(DateTime dt,char Separator){ if(dt !=null&& !dt.Equals(DBNull.Value)) { string tem=string.Format("hh{0}mm{1}ss",Separator,Separator); return dt.ToString(tem); } else { return GetFormatDate(DateTime.Now,Separator); } } ///<summary> ///把秒转换成分钟 ///</summary> ///<returns></returns> public static int SecondToMinute(int Second) { decimal mm=(decimal)((decimal)Second/(decimal)60); return Convert.ToInt32(Math.Ceiling(mm)); } #region 返回某年某月最后一天 ///<summary> ///返回某年某月最后一天 ///</summary> ///<param name="year">年份</param> ///<param name="month">月份</param> ///<returns>日</returns> public static int GetMonthLastDate(int year,int month) { DateTime lastDay=new DateTime(year,month,new System.Globalization.GregorianCalendar().GetDaysInMonth(year,month)); int Day=lastDay.Day; return Day; } #endregion #region 返回时间差 public static string DateDiff(DateTime DateTime1,DateTime DateTime2) { string dateDiff=null; try { ///TimeSpan ts1=new TimeSpan(DateTime1.Ticks); //TimeSpan ts2=new TimeSpan(DateTime2.Ticks); //TimeSpan ts=ts1.Subtract(ts2).Duration(); TimeSpan ts=DateTime2-DateTime1; if(ts.Days >=1) { dateDiff=DateTime1.Month.ToString()+"月"+DateTime1.Day.ToString()+"日"; } else { if(ts.Hours>1) { dateDiff=ts.Hours.ToString()+"小时前"; } else { dateDiff=ts.Minutes.ToString()+"分钟前"; } } } catch {} return dateDiff } #endregion #region 获得两个日期的间隔 ///<summary> ///获得两个日期的间隔 ///</summary> ///<param name="DateTime1">日期一。</param> ///<param name="DateTime2">日期二。</param> ///<returns>日期间隔TimeSpan。</returns> public static TimeSpan DateGiff2(DateTime DateTime1,DateTime DateTime2) { TimeSpan ts1=new TimeSpan(DateTime1.Ticks); TimSpan ts2=new TimeSpan(DateTime2.Ticks); TimeSpan ts=ts1.Subtract(ts2).Duration(); return ts; } #endregion #region 格式化日期时间 ///<summary> ///格式化日期时间 ///</summary> ///<param name="dateTime1">日期时间</param> ///<param name="dateMode">显示模式</param> ///<returns>0-9种模式的日期</returns> public static string FormatDate(DateTime dateTime1,string dateMode) { switch(dateMode) { case "0": return dateTime1.ToString("yyyy-MM-dd"); case "1": return dateTime1.ToString("yyyy-MM-dd HH:mm:ss"); case "2": return dateTime1.ToString("yyyy/MM/dd"); case "3": return dateTime1.ToString("yyyy年MM月dd日"); case "4": return dateTime1.ToString("MM-dd"); case "5": return dateTime1.ToString("MM/dd"); case "6": return dateTime1.ToString("MM月dd日"); case "7": return dateTime1.ToString("yyyy-MM"); case "8": return dateTime1.ToString("yyyy/MM"); case "9": return dateTime1.ToString("yyyy年MM月"); default: return dateTime1.ToString(); } } #endregion #region 得到随机日期 ///<summary> ///得到随机日期 ///</summary> ///<param name="time1">起始日期</param> ///<param name="time2">结束日期</param> ///<returns>间隔日期之间的随机日期</returns> public static DateTime GetRandomTime(DateTime time1,DateTime time2) { Random random=new Random(); DateTime minTime=new DateTime(); DateTime maxTime=new DateTime(); System.TimeSpan ts=new System.TimeSpan(time1.Ticks-time2.Ticks); //获取两个时间相隔的秒数 double dTotalSecond=ts.TotalSeconds; int iTotalSecond=0; if(dTotalSeconds>System.Int32.MaxValue) { iTotalSeconds=System.Int32.MaxValue; } else if(dTotalSeconds<System.Int32.MinValue) { iTotalSeconds=System.Int32.MinValue; } else { iTotalSeconds=(int)dTotalSeconds; } if(iTotalSeconds>0) { minTime=time2; maxTime=time1; } else if(iTotalSeconds<0) { minTime=time1; maxTime=time2; } else{ return time1; } int maxValue=iTotalSeconds; if(iTotalSeconds <=System.Int32.MinValue) maxValue=System.Int32.MinValue+1; int i=random.Next(System.Math.Abs(maxValue)); return minTime.AddSeconds(i); } #endregion } }