如何从当年的第周周获得第一周的日期 [英] How to get 1st Week Date from Week No of the Current Year

查看:54
本文介绍了如何从当年的第周周获得第一周的日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!



我能够获得当前日期的周数(代码):

Hi !

I am able to get Week No. of the Current Date (Code):

DateTime dt1 = Convert.ToDateTime(DateTime.Now.ToString("MM/dd/yyyy"));
int yyyy = dt1.Year; int MM = dt1.Month; int dd = dt1.Day;
        System.Globalization.CultureInfo ci = System.Threading.Thread.CurrentThread.CurrentCulture;
        Int32 weekNo = ci.Calendar.GetWeekOfYear(new DateTime(yyyy, MM, dd), ci.DateTimeFormat.CalendarWeekRule, ci.DateTimeFormat.FirstDayOfWeek );





现在我想从给定年份的给定周数得到第一个日期。

请建议...



Now I want to get 1st Date from a Given Week No of the given Year.
Please suggest ...

推荐答案

static DateTime FirstDateOfWeek(int year, int weekNum, CalendarWeekRule rule)
{
    Debug.Assert(weekNum >= 1);

    DateTime jan1 = new DateTime(year, 1, 1);

    int daysOffset = DayOfWeek.Monday - jan1.DayOfWeek;
    DateTime firstMonday = jan1.AddDays(daysOffset);
    Debug.Assert(firstMonday.DayOfWeek == DayOfWeek.Monday);

    var cal = CultureInfo.CurrentCulture.Calendar;
    int firstWeek = cal.GetWeekOfYear(firstMonday, rule, DayOfWeek.Monday);

    if (firstWeek <= 1)
    {
        weekNum -= 1;
    }

    DateTime result = firstMonday.AddDays(weekNum * 7);


我手工写了但是希望它会帮助:)

Hi, I wrote it by hand but hope it''ll help :)
public static DateTime GetYearWeekFirstDay(int year, int week)
{            
    var days = 7 * (week - 1) + 1;

    if (days > 366)
        throw new InvalidDataException("Invalid week numbers!");

    var date = new DateTime(year, 1, 1);

    if (date.DayOfWeek != DayOfWeek.Sunday)
        date = date.AddDays(7 - (int)(date.DayOfWeek));

    var count = 1;

    while (count != days)
    {
        count++;
        date = date.AddDays(1);
    }

    return date;
}


这篇关于如何从当年的第周周获得第一周的日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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