获得在C#中的日期GetWeekOfYear? [英] Get the dates for GetWeekOfYear in c#?

查看:2207
本文介绍了获得在C#中的日期GetWeekOfYear?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个功能,这给了我(对于当前日期) - 其周民:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆