1.使用DateTime.Compare()
- 注意:两个比较的时间,一定与相同的时间精度,比如都精确到分钟,或都精确到日
- 注意:这里我判断指定时间是否在时间范围的闭区间里
/// <summary>
/// 判断指定的时间是否在指定的范围
/// </summary>
/// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <returns></returns>
public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
{
DateTime dt = Convert.ToDateTime(dateTime);
DateTime dtStartTime = Convert.ToDateTime(startTime);
DateTime dtEndTime = Convert.ToDateTime(endTime);
int compNum1 = DateTime.Compare(dt, dtStartTime);
int compNum2 = DateTime.Compare(dt, dtEndTime);
return compNum1 >= 0 && compNum2 <= 0;
}
2.通过时间相减计算时间间隔,可以指定精确度
- 注意:这里我使用的TotalSeconds(),让比较时间精确到秒
- 注意:这里我判断指定时间是否在时间范围的闭区间里
/// <summary>
/// 判断指定的时间是否在指定的范围
/// </summary>
/// <param name="dateTime">指定时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <param name="startTime">开始时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <param name="endTime">结束时间,字符串类型,形如:yyyy-MM-dd hh:mm:ss</param>
/// <returns></returns>
public static bool IsBetweenTimeSpan(string dateTime, string startTime, string endTime)
{
DateTime dt = Convert.ToDateTime(dateTime);
DateTime dtStartTime = Convert.ToDateTime(startTime);
DateTime dtEndTime = Convert.ToDateTime(endTime);
double ts1 = (dt - dtStartTime).TotalSeconds;
double ts2 = (dt - dtEndTime).TotalSeconds;
return ts1 >= 0 && ts2 <= 0;
}
/// <summary>
/// 判断指定的时间是否在指定的范围
/// </summary>
/// <param name="dateTime">指定时间,DateTime类型</param>
/// <param name="startTime">开始时间,DateTime类型</param>
/// <param name="endTime">结束时间,DateTime类型</param>
/// <returns></returns>
public static bool IsBetweenTimeSpan(DateTime dateTime, DateTime startTime, DateTime endTime)
{
double ts1 = (dateTime - startTime).TotalSeconds;
double ts2 = (dateTime - endTime).TotalSeconds;
return ts1 >= 0 && ts2 <= 0;
}
/// <summary>
/// 判断当前时间是否在指定的范围
/// </summary>
/// <param name="startTime">开始时间,DateTime类型</param>
/// <param name="endTime">结束时间,DateTime类型</param>
/// <returns></returns>
public static bool IsBetweenTimeSpan(DateTime startTime, DateTime endTime)
{
DateTime dateTime = DateTime.Now;
double ts1 = (dateTime - startTime).TotalSeconds;
double ts2 = (dateTime - endTime).TotalSeconds;
return ts1 >= 0 && ts2 <=0;
}