1.工具类
using System;
using System.Globalization;
namespace Infrastructure
{
public static class DateTimeExtensions
{
/// <summary>
/// 当前时间
/// </summary>
public static DateTime CurrentDateTime = DateTime.Now;
/// <summary>
/// 本周周一
/// </summary>
public static DateTime StartWeek = CurrentDateTime.AddDays(1 - Convert.ToInt32(CurrentDateTime.DayOfWeek.ToString("d")));
/// <summary>
/// 本周周日
/// </summary>
public static DateTime EndWeek = StartWeek.AddDays(6);
/// <summary>
/// 本月月初
/// </summary>
public static DateTime StartMonth = CurrentDateTime.AddDays(1 - CurrentDateTime.Day);
/// <summary>
/// 本月月末
/// </summary>
public static DateTime EndMonth = StartMonth.AddMonths(1).AddDays(-1);
/// <summary>
/// 本季度初
/// </summary>
public static DateTime StartQuarter = CurrentDateTime.AddMonths(0 - (CurrentDateTime.Month - 1) % 3).AddDays(1 - CurrentDateTime.Day);
/// <summary>
/// 本季度末
/// </summary>
public static DateTime EndQuarter = StartQuarter.AddMonths(3).AddDays(-1);
/// <summary>
/// 本年年初
/// </summary>
public static DateTime StartYear = new DateTime(CurrentDateTime.Year, 1, 1);
/// <summary>
/// 本年年末
/// </summary>
public static DateTime EndYear = new DateTime(CurrentDateTime.Year, 12, 31);
/// <summary>
/// 计算本周的周一日期
/// </summary>
public static DateTime GetMondayDate()
{
return GetMondayDate(DateTime.Now);
}
/// <summary>
/// 计算本周的周日日期
/// </summary>
public static DateTime GetSundayDate()
{
return GetSundayDate(DateTime.Now);
}
/// <summary>
/// 计算某周起始日期(周一的日期)
/// </summary>
/// <param name="somedate">该周中任意一天</param>
/// <returns>返回周一日期,后面的具体时、分、秒和传入值相等</returns>
public static DateTime GetMondayDate(DateTime somedate)
{
int i = somedate.DayOfWeek - DayOfWeek.Monday;
if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,sunday排在最前,此时sunday-monday=-1,必须+7=6。
TimeSpan ts = new TimeSpan(i, 0, 0, 0);
return somedate.Subtract(ts);
}
/// <summary>
/// 计算某周结束日期(周日的日期)
/// </summary>
/// <param name="somedate">该周中任意一天</param>
/// <returns>返回周日日期,后面的具体时、分、秒和传入值相等</returns>
public static DateTime GetSundayDate(DateTime somedate)
{
int i = somedate.DayOfWeek - DayOfWeek.Sunday;
if (i != 0) i = 7 - i;// 因为枚举原因,sunday排在最前,相减间隔要被7减。
TimeSpan ts = new TimeSpan(i, 0, 0, 0);
return somedate.Add(ts);
}
public static DateTime ToStartDate(this DateTime date)
{
var str = date.ToString("yyyy-MM-dd") + " 00:00:00";
return DateTime.Parse(str);
}
public static DateTime ToStartDate(this DateTime date, string time)
{
var str = date.ToString("yyyy-MM-dd") + " " + time;
return DateTime.Parse(str);
}
public static DateTime ToEndDate(this DateTime date)
{
var str = date.ToString("yyyy-MM-dd") + " 23:59:59";
return DateTime.Parse(str);
}
public static DateTime ToEndDate(this DateTime date, string time)
{
var str = date.ToString("yyyy-MM-dd") + " " + time;
return DateTime.Parse(str);
}
/// <summary>
/// 将字符串"2016-05-12"转换为DateTime类型"2016-05-12 00:00:00"
/// </summary>
public static DateTime ToStartDate(string date)
{
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
return result.ToStartDate();
}
public static DateTime ToStartDate(string date, string time)
{
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
return result.ToStartDate(time);
}
/// <summary>
/// 将字符串"2016-05-12"转换为DateTime类型"2016-05-12 23:59:59"
/// </summary>
public static DateTime ToEndDate(string date)
{
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
return result.ToEndDate();
}
public static DateTime ToEndDate(string date, string time)
{
DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
return result.ToStartDate(time);
}
}
}