要获取一周中的第一天,按日期:
static DateTime GetFirstDayOfWeek(DateTime date)
{
var firstDayOfWeek = date.AddDays(-((date.DayOfWeek - DayOfWeek.Sunday + 7) % 7));
if (firstDayOfWeek.Year != date.Year)
firstDayOfWeek = new DateTime(date.Year, 1, 1);
return firstDayOfWeek;
}
一周的最后一天的工作方式相同:
static DateTime GetLastDayOfWeek(DateTime date)
{
var lastDayOfWeek = date.AddDays((DayOfWeek.Saturday - date.DayOfWeek + 7) % 7);
if (lastDayOfWeek.Year != date.Year)
lastDayOfWeek = new DateTime(date.Year, 12, 31);
return lastDayOfWeek;
}
Royi 的补充(最终):
扩展方法,它为您提供单个日期的所有详细信息(周详细信息):ps 星期的第一天 = 星期日。
public class DateTimeSpan
{
public DateTime WeekStartDate;
public DateTime WeekEndDate;
public DateTime MonthStartDate;
public DateTime MonthEndDate;
public DateTime YearStartDate;
public DateTime YearEndDate;
public int WeekNum;
}
public static DateTimeSpan TimeProperties(this DateTime str)
{
if (str == null) return null;
DateTimeSpan dts = new DateTimeSpan();
dts.WeekNum= CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(str, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
dts.WeekStartDate = GetFirstDayOfWeek(str);
dts.WeekEndDate = GetLAstDayOfWeek(str);
dts.MonthStartDate = new DateTime(str.Year, str.Month, 1);
int numberOfDays = DateTime.DaysInMonth(str.Year, str.Month);
DateTime last = new DateTime(str.Year, str.Month, numberOfDays);
dts.MonthEndDate = last;
dts.YearStartDate = new DateTime(str.Year, 1, 1);
numberOfDays = DateTime.DaysInMonth(str.Year, 12);
last = new DateTime(str.Year, 12, numberOfDays);
dts.YearEndDate = last;
return dts;
}
static DateTime GetFirstDayOfWeek(DateTime date)
{
var firstDayOfWeek = date.AddDays(-((date.DayOfWeek - DayOfWeek.Sunday + 7) % 7));
if (firstDayOfWeek.Year != date.Year)
firstDayOfWeek = new DateTime(date.Year, 1, 1);
return firstDayOfWeek;
}
static DateTime GetLAstDayOfWeek(DateTime date)
{
var firstDayOfWeek = date.AddDays(((DayOfWeek.Saturday - date.DayOfWeek + 7) % 7));
if (firstDayOfWeek.Year != date.Year)
firstDayOfWeek = new DateTime(date.Year, 12, 31);
return firstDayOfWeek;
}