获得在C#中的日期GetWeekOfYear? [英] Get the dates for GetWeekOfYear in c#?
问题描述
我有这个功能,这给了我(对于当前日期) - 其周民:
I have this function which gives me ( for a current date ) - its week num :
所以:日期时间(2009,1,1)
CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(new DateTime(2009,1,1), CalendarWeekRule.FirstDay, DayOfWeek.Sunday).Dump();
答: 1
和日期时间(2009,1,4)
答: 2
现在,我需要一个函数,它给了我起始日期和放大器;&安培; ENDDATE这个值:
now , I need a function which gives me the startDate && endDate for this values :
so for week #1 -> 1/1/2009 ---> 1/3/2009
so for week #2 -> 1/4/2009 ---> 1/10/2009
因此:我有一个函数,它给了我一周NUM在指定的日期。
但本周跨越了从 X --->是
Hence : i have a function which gives me the week num for a specified date.
but this week spans from x---> y
我需要那些x和y。
感谢。
P.S。 - 我一直在寻找这样的FUNC,并没有发现。 : - (的
推荐答案
要获得首日的一周中,按日期:
To get the first day in the week, by date:
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;
}
本周的最后一天以同样的方式:
The last day of the week works the same way:
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的加法(决赛):
扩展方法,让你单日所有的细节(一周详细说明): 附:周=星期日第一天。
Royi's addition ( final) :
extension method which gives you all the details ( week details) from a single date : p.s. first day of week = sunday.
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;
}
这篇关于获得在C#中的日期GetWeekOfYear?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!