我有这个功能,它给了我(当前日期) - 它的周数:
因此:DateTime(2009,1,1)
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(2009,1,1), CalendarWeekRule.FirstDay, DayOfWeek.Sunday).Dump();
回答:1
和for:DateTime(2009,1,4)
回答:2
现在,我需要一个功能,它给我startDate&& endDate表示此值:
so for week #1 -> 1/1/2009 ---> 1/3/2009
so for week #2 -> 1/4/2009 ---> 1/10/2009
因此:我有一个函数,它给出了指定日期的周数。
但本周跨越x---> y
我需要那些x和y。
感谢。
P.S。 - 我一直在寻找这样的功能,但没有找到。 : - (
答案 0 :(得分:1)
答案 1 :(得分:1)
using System;
using System.Globalization;
public static class FirstDayOfWeekUtility
{
/// <summary>
/// Returns the first day of the week that the specified
/// date is in using the current culture.
/// </summary>
public static DateTime GetFirstDayOfWeek(DateTime dayInWeek)
{
CultureInfo defaultCultureInfo = CultureInfo.CurrentCulture;
return GetFirstDateOfWeek(dayInWeek, defaultCultureInfo);
}
/// <summary>
/// Returns the first day of the week that the specified date
/// is in.
/// </summary>
public static DateTime GetFirstDayOfWeek(DateTime dayInWeek, CultureInfo cultureInfo)
{
DayOfWeek firstDay = cultureInfo.DateTimeFormat.FirstDayOfWeek;
DateTime firstDayInWeek = dayInWeek.Date;
while (firstDayInWeek.DayOfWeek != firstDay)
firstDayInWeek = firstDayInWeek.AddDays(-1);
return firstDayInWeek;
}
}
答案 2 :(得分:1)
按日期获取本周的第一天:
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;
}
扩展方法,从单个日期为您提供所有详细信息(周详情): 附:一周的第一天=星期日。
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;
}