如何按一周中的一周和一周中的一周获取当前日期

时间:2018-01-08 09:45:27

标签: c# date

我知道一年,一年中的一周以及一周中的一周 有了这些信息,我想得到当前的日期 例如,
年份:2018年 一年中的一周:01
星期几:3
我希望在03/01/2018之前获得价值。

2 个答案:

答案 0 :(得分:1)

您可以使用此方法获取一周的第一天:

public static DateTime FirstDateOfWeek(int year, int weekOfYear, System.Globalization.CultureInfo ci = null)
{
    if (ci == null) ci = System.Globalization.CultureInfo.CurrentCulture;
    DateTime jan1 = new DateTime(year, 1, 1);
    int daysOffset = ((int)ci.DateTimeFormat.FirstDayOfWeek) - ((int) jan1.DayOfWeek);
    DateTime firstWeekDay = jan1.AddDays(daysOffset);
    int firstWeek = ci.Calendar.GetWeekOfYear(jan1, ci.DateTimeFormat.CalendarWeekRule, ci.DateTimeFormat.FirstDayOfWeek);
    if (firstWeek <= 1|| firstWeek > 50 )
        weekOfYear--;

    return firstWeekDay.AddDays(weekOfYear * 7);
}

然后您只需要向其添加dayOfWeek - 1

int year = 2018;
int weekOfYear = 01;
int dayOfWeek = 03;
DateTime firstDateOfWeek = FirstDateOfWeek(year, weekOfYear);
DateTime desiredResult = firstDateOfWeek.AddDays(dayOfWeek - 1);

答案 1 :(得分:0)

首先获得一年中的一天,乘以一年中的一周* 7加上星期几:

int dayOfYear = weekOfYear*7 + dayOfWeek

然后获取与一年中第一天相对应的日期时间,并添加天数:

DateTime myDate = new DateTime(year, 1, 1).AddDays(dayOfYear - 1);

要将其作为具有所需格式的字符串,请使用:

string myString = myDate.ToString("dd/MM/yyyy");