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
}
}

 

posted @ 2017-07-13 14:41  维尼熊320  阅读(284)  评论(0编辑  收藏  举报